HasMap mit JComponents mit instanceof

daWonderer

Aktives Mitglied
Hallo,

folgendes Bsp.:

Java:
HashMap<String, JComponent> map = new HashMap<String, JComponent>;

map.put( "label", new JLabel("test") );
map.put( "button", new JButton("test") );

JComponent element = map.get( "label" );
if( element instanceof JLabel ) System.out.println( "label ist ein JLabel" );

element = map.get( "button" );
if( element instanceof JButton ) System.out.println( "button ist ein JButton" );

Die beiden Ausgaben erfolgen korrekt. Super, dass das funktioniert dachte ich mir gerade.

Element ist als JComponent instanziert, aber doch gibt instanceof etwas anderes zurück.

Wieso eigentlich? Was passiert hier intern bei Java? // verwirrt schauend....

Danke schon mal
 
Zuletzt bearbeitet:
Wieso eigentlich? Was passiert hier intern bei Java? // verwirrt schauend....

Mhmm..also du erstellst ja konkrete JLabel und JButton - Objekte... du schränkst sie zwar mit JComponent ein, dennoch sinds ja letztendlich konkrete Objekte die du durch new jLabel, new jButton erstellt hast.

Java:
Object a = new String("hallo welt");
System.out.println(a instanceof String);

vllt hilft ja: Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 6.9 Typen in Hierarchien
(Was wissen Compiler und Laufzeitumgebung über unser Programm?)
 
Zuletzt bearbeitet:
ein JLabel bleibt immer ein JLabel, kann aber in einer JComponent-Variablen abgelegt werden

so wie man einen Mercedes auch einfach als 'Auto' oder noch allgemeiner 'Gegenstand' bezeichnen kann
 

Zurück
Oben