Polymorphie - Beispielcode

JavaIsTheBest

Bekanntes Mitglied
Hallo,
was ist an diesem Code bedenklich? Bzw. warum passiert hier ein Compileerror?

Java:
Object o = new String();                              
    Liste<Object> objListe=new Liste<String>(100);

Java:
Object o = new String();                               
    Liste<Object> objListe=new Liste<Object>(100);        
    Liste<String> strListe = new Liste<String>(100);
    objListe = strListe;
    objListe.add(new Object());
 
Zuletzt bearbeitet von einem Moderator:
Hey JavaIsTheBeast,

1. Es heißt List und nicht Liste 🙂
2. List ist ein Interface und du kannst deine Variable nicht mit einem Interface initialisieren mMn.
3. Wenn du eine List initialisieren willst, solltest du die ArrayList Klasse nehmen, die btw List implementiert.
 
was ist an diesem Code bedenklich? Bzw. warum passiert hier ein Compileerror?
Weil Generics invariant sind. D.h. hier müsstest du mit "existential quantifiers" arbeiten.
Das würde gehen:
Java:
List<? extends Object> objListe = new ArrayList<>(100);
List<String> strListe = new ArrayList<>(100);
objListe = strListe;
Hier sollte man sich auch PECS ansehen.
 
Hallo,
was ist an diesem Code bedenklich? Bzw. warum passiert hier ein Compileerror?

Java:
Object o = new String();                            
    Liste<Object> objListe=new Liste<String>(100);

Java:
Object o = new String();                             
    Liste<Object> objListe=new Liste<Object>(100);      
    Liste<String> strListe = new Liste<String>(100);
    objListe = strListe;
    objListe.add(new Object());
Und für die Zukunft:
Wenn du einen Compileerror oder auch eine Exception bekommst, solltest du direkt auch die ganze Fehlermeldung mitposten, damit man dir gezielter helfen kann.
 
Moin,
Java:
Object o = new String();
Mal ganz davon abgesehen, dass o nicht verwendet wird (und zudem ein ganz dummer Variablenname ist) ... hat es irgendeinen speziellen Grund, das so zu deklarieren ??
Object ist bei Java immer die oberste Ebene, sprich: alles ist ein Object, sprich: jeder String ist auch ein Object, weil: davon abgeleitet ...

ergo: warum nicht
Java:
String myString = new String();
???
Gruß Klaus
 

Zurück
Oben