Seite 1 von 1

Elemente im Array auf Ihren Datentyp überprüfen

Verfasst: Sa Okt 31, 2015 7:23 pm
von back2proggen
Hallo allerseits,

Machen wir die Annahme ,dass wir eine Klasse haben welches eine Methode mit dem Rückgabe T besitzt.
Diese Klasse besitzt auch einen Array vom Typ Object. In diesem Array wollen wir vorerst generische Typen hinzufügen

Code: Alles auswählen

public class name <T>

Code: Alles auswählen

private Object [] elemente;

Code: Alles auswählen

public T getKleinstesElement() 
	{
		
		return (T) (elemente[0]);
	}
Ich möchte mit der Methode getKleinstesElement() den kleinsten Element im Array zurückgeben. Bevor ich das mache möchte überprüfen, ob die enthaltenen Elemente Numerisch sind und dann den kleinsten Element rauspicken und zurückgeben.

Ist das in Java möglich ?

Re: Elemente im Array auf Ihren Datentyp überprüfen

Verfasst: Sa Okt 31, 2015 8:45 pm
von Xin
back2proggen hat geschrieben:Machen wir die Annahme ,dass wir eine Klasse haben welches eine Methode mit dem Rückgabe T besitzt.
Diese Klasse besitzt auch einen Array vom Typ Object. In diesem Array wollen wir vorerst generische Typen hinzufügen

Ich möchte mit der Methode getKleinstesElement() den kleinsten Element im Array zurückgeben.
Wenn T ein Interface implementiert, das einen Größenvergleich erlaubt, sollte das gehen.
back2proggen hat geschrieben:Bevor ich das mache möchte überprüfen, ob die enthaltenen Elemente Numerisch sind und dann den kleinsten Element rauspicken und zurückgeben.

Ist das in Java möglich ?
Zu überprüfen, ob das enthaltene Element numerisch ist, halte ich für eher unwahrscheinlich... aber da bin zu wenig Javaexperte und sehe Generics hier für das falsche Konzepte, die Frage überhaupt zu stellen.
In C++ hätte ich dazu Ideen für Templates, aber Generics sind halt keine Templates.

Re: Elemente im Array auf Ihren Datentyp überprüfen

Verfasst: Sa Okt 31, 2015 10:54 pm
von back2proggen
Xin hat geschrieben:Wenn T ein Interface implementiert, das einen Größenvergleich erlaubt, sollte das gehen.
Meinst du so etwas wie das Comparable Interface ?
Wenn ja wie soll ich damit den die Elemente des Arrays vergleichen ?

Re: Elemente im Array auf Ihren Datentyp überprüfen

Verfasst: So Nov 01, 2015 12:11 am
von Xin
back2proggen hat geschrieben:
Xin hat geschrieben:Wenn T ein Interface implementiert, das einen Größenvergleich erlaubt, sollte das gehen.
Meinst du so etwas wie das Comparable Interface ?
Gutes Beispiel. :)
back2proggen hat geschrieben:Wenn ja wie soll ich damit den die Elemente des Arrays vergleichen ?
Ich glaube, ich verstehe die Frage nicht...?
Du packst Dir das erste Element und guckst, ob Du ein anderes Element im Array, ob Du ein kleineres findest?

Re: Elemente im Array auf Ihren Datentyp überprüfen

Verfasst: So Nov 01, 2015 12:27 am
von back2proggen
Xin hat geschrieben:Du packst Dir das erste Element und guckst, ob Du ein anderes Element im Array, ob Du ein kleineres findest?
Das macht die Api bereits für mich. Bevor ich überhaupt nach den kleinsten Element nachschaue muss ich wissen ob sie Numerisch sind. Die Frage nur wie ?

Re: Elemente im Array auf Ihren Datentyp überprüfen

Verfasst: So Nov 01, 2015 12:36 am
von Xin
back2proggen hat geschrieben:Das macht die Api bereits für mich. Bevor ich überhaupt nach den kleinsten Element nachschaue muss ich wissen ob sie Numerisch sind. Die Frage nur wie ?
Wenn Du sie in der Größe vergleichen kannst, sollten Sie doch auch numerisch vergleichbar sein!?

Oder was für ein "numerisch" brauchst Du?

Re: Elemente im Array auf Ihren Datentyp überprüfen

Verfasst: So Nov 01, 2015 1:07 am
von back2proggen
Hat sich erledigt.

Code: Alles auswählen

public class isNumeric  
{
	public static boolean inspect( Object[] el)
	{
		boolean isNumeric;
		
		if(el[0] instanceof Number )
		{
			 isNumeric = true;

		}
		else
		{
			isNumeric = false;
		}
		
		return isNumeric;
	}

}

Re: Elemente im Array auf Ihren Datentyp überprüfen

Verfasst: So Nov 01, 2015 2:08 pm
von mfro
Wenn man so was braucht, sollte man dringend über das Design nachdenken (da ist höchstwahrscheinlich was faul).

Datentypen gibt's, damit Compiler bereits zur Compilezeit Typprüfungen durchführen können, um zum Einen den Code zu optimieren und zum Anderen Fehler bereits zu einem sehr frühen Zeitpunkt finden zu können.

Wenn man zur Laufzeit Typüberprüfungen durchführen muß/will hebelt man das komplett aus. Entweder die Klassenhierarchie ist sauber designed (dann hat sich der Autor beim "Verstecken" höchstwahrscheinlich was gedacht - information hiding - und stellt entsprechende "saubere" Zugriffsmethoden bereit, die man verwenden sollte) oder er hat das nicht getan. Dann wird's höchste Zeit dafür.