Ersatz fuer instanceof

MiMi

Erfahrenes Mitglied
Also ich hab nen Vector mit Objecten.
Menutyp1, Menutyp2 und Menutyp3
2 und 3 erben von 1
jetzt hab ich das mit instanceof geloest

Code:
Object o = menuTypen.elementAt(currentChooseNumber-1);
		if ( o instanceof MenuType2 ) {
			Display.getDisplay(main).setCurrent((MenuType2)menuTypen.elementAt(currentChooseNumber-1));
		} else if ( o instanceof MenuType1 ) {
			Display.getDisplay(main).setCurrent((MenuType1)menuTypen.elementAt(currentChooseNumber-1));
		}

Gibts da ne bessere Loesung? Weil ich mal gelesen hab, man sollte den Gebrauch von instanceof vermeiden.
 
Also ich hab nen Vector mit Objecten.
Menutyp1, Menutyp2 und Menutyp3
2 und 3 erben von 1
jetzt hab ich das mit instanceof geloest

Code:
Object o = menuTypen.elementAt(currentChooseNumber-1);
		if ( o instanceof MenuType2 ) {
			Display.getDisplay(main).setCurrent((MenuType2)menuTypen.elementAt(currentChooseNumber-1));
		} else if ( o instanceof MenuType1 ) {
			Display.getDisplay(main).setCurrent((MenuType1)menuTypen.elementAt(currentChooseNumber-1));
		}

Gibts da ne bessere Loesung? Weil ich mal gelesen hab, man sollte den Gebrauch von instanceof vermeiden.
Hm.. deine setCurrent() akzeptiert welchen Typ? Ich versteh nicht, warum du da extra nen Cast machst?

Code:
Display.display(main).setCurrent(menuTypen.elementAt(currentChooseNumber-1));

sollte es doch tun, oder?
 
setCurrent akzeptiert nur ein Displayable.
Und Menutyp1, 2 und 3 sind welche
Mach ich einfach
Code:
 Display.display(main).setCurrent(menuTypen.elementAt(currentChooseNumber-1));
sagt er das er keine methode findet, weil er das nur als Object ansieht.
 
Hab jetzt einfach
Code:
 Display.getDisplay(main).setCurrent((MenuType1)menuTypen.elementAt(currentChooseNumber));
gemacht funktioniert. Trotzdem danke :D
 
Wenn beide Klassen Displayable sind, dann caste doch einfach darauf...

Code:
Display.display(main).setCurrent((Displayable) menuTypen.elementAt(currentChooseNumber-1));
 
Zurück