Elemente im Array auf Ihren Datentyp überprüfen

Objektorientierte Programmiersprache auf Basis einer virtuellen Maschine (https://www.oracle.com/java/)
Antworten
back2proggen
Beiträge: 7
Registriert: Sa Okt 17, 2015 11:29 pm

Elemente im Array auf Ihren Datentyp überprüfen

Beitrag von back2proggen » Sa Okt 31, 2015 7:23 pm

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 ?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

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

Beitrag von Xin » Sa Okt 31, 2015 8:45 pm

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.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

back2proggen
Beiträge: 7
Registriert: Sa Okt 17, 2015 11:29 pm

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

Beitrag von back2proggen » Sa Okt 31, 2015 10:54 pm

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 ?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

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

Beitrag von Xin » So Nov 01, 2015 12:11 am

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?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

back2proggen
Beiträge: 7
Registriert: Sa Okt 17, 2015 11:29 pm

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

Beitrag von back2proggen » So Nov 01, 2015 12:27 am

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 ?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

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

Beitrag von Xin » So Nov 01, 2015 12:36 am

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?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

back2proggen
Beiträge: 7
Registriert: Sa Okt 17, 2015 11:29 pm

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

Beitrag von back2proggen » So Nov 01, 2015 1:07 am

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;
	}

}

mfro
Beiträge: 346
Registriert: Mi Jan 16, 2013 4:58 pm

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

Beitrag von mfro » So Nov 01, 2015 2:08 pm

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.
It's as simple as that. And remember, Beethoven wrote his first symphony in C.

Antworten