Benutzung von InstanceOf

MiMi

Erfahrenes Mitglied
Hi,

also mal ne Frage, ich hab nen Scenetyp1, Scenetyp2 und Scenetyp3
2 und 3 erben von 1
Jetzt bin ich in 1 und will herrausfinden ob der aktuelle Scenetyp vom typ2 oder 3 ist. Momentan hab ich das so geloest:

Java:
	private String getLeftButton () {
		String valueButton = null;
		boolean instanceOfScene2 = this instanceof Scenetype2;
		boolean instanceOfScene3 = this instanceof Scenetype3;
		//if next != null write next
		// && if this is not the main menu
		if (main.getValue("next", getTitle()) != null && !getTitle().equalsIgnoreCase("menu")) {
			valueButton = main.getValue("next", "menu");
		// if this is not the main menu
		// && if this is an instance of Scenetyp2 or Scenetyp3
		} else if (!getTitle().equalsIgnoreCase("menu") && (instanceOfScene2 || instanceOfScene3) ) {
			valueButton = main.getValue("send", "menu");
		}
		return valueButton;
	}
D.h. ich guck obs vom Typ 2 oder vom typ 3 ist. Kann man direkt schauen ob es sich um eine abgeleitete Klasse vom Typ 1 handelt?
Weil !(this instanceof Scenetyp1) kann ich ja net schreiben, alle sind ja vom Typ 1.
 
Moin!
Also über getSuperClass() kannst du die Superklasse einer Klasse erfragen..
Diesen Aufruf würde ich so lange durchiterieren, bis ich entweder bei der Object- oder bei der Typ 1 Klasse angekommen wäre...
Also ungefähr so:
Code:
Class clazz = this.getClass();
while(!clazz.equals(Object.class) || !clazz.equals(Typ1.class)){
clazz = clazz.getClass().getSuperClass();

}
if(clazz.equals(Typ1.class)
   //Objekt ist instanz von typ1 abgeleitete klasse


Edit:
Ups..
Noch einfacher wäre natürlich folgendes:
Code:
boolean notTyp1 = this instanceof Typ1 && !this.getClass().equals(Typ1.class)
*grüssle*
MeinerEiner
 
Zuletzt bearbeitet von einem Moderator:
Da wir fast gleichzeitg gepostet haben, hast es wahrscheinlich nicht gesehehen, was ich noch gepostet habe...
Es geht nämlich noch einfacher
Code:
boolean notTyp1 = this instanceof Typ1 && !this.getClass().equals(Typ1.class)
Würde abfragen, ob die Klasse von Typ1 abgeleitet ist, aber nicht Typ1 ist..
*grüssle*
MeinerEiner
 
this instanceof Typ1
Dieses kann ich mir ja sparen, da this IMMER Typ1 ist
Aber mit dem dem hinten Teil scheint es zu funktionieren auch in J2ME, thx.
 
Zurück