Hallo,
ich arbeite derzeit an einem kleinen Framework und habe Probleme mit den Generics.
Folgende Klassen/Interfaces habe ich:
Die Frage ist hier jetzt, warum ich in der Mainklasse keine neue SpecialRootGroup zu einer SpecialRoot hinzufügen kann, obwohl diese SpecialRootGroup ja von RootGroup erbt, was die Bedingung für den Parameter ist.
Jede Hilfe ist sehr willkommen
Bye The_Unknown
ich arbeite derzeit an einem kleinen Framework und habe Probleme mit den Generics.
Folgende Klassen/Interfaces habe ich:
Java:
public abstract class Root {
public List<? extends RootGroup> groups;
public List<? extends RootGroup> getGroups() {
return groups;
}
public void setGroups(List<? extends RootGroup> groups) {
this.groups = groups;
}
}
public abstract class RootGroup {
public RootGroup(String name) {
this.name = name;
}
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String toString() {
return this.name;
}
}
public class SpecialRootGroup extends RootGroup {
public SpecialRootGroup(String name) {
super(name);
}
}
public class SpecialRoot extends Root {
public SpecialRoot() {
ArrayList<SpecialRootGroup> specialRootGroups = new ArrayList<SpecialRootGroup>();
specialRootGroups.add(new SpecialRootGroup("1"));
specialRootGroups.add(new SpecialRootGroup("2"));
specialRootGroups.add(new SpecialRootGroup("3"));
setGroups(specialRootGroups);
}
}
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
SpecialRoot specialRoot = new SpecialRoot();
specialRoot.getGroups().add(new SpecialRootGroup("")); // Problem hier: keine Typübereinstimmung
System.out.println(specialRoot.getGroups());
}
}
Die Frage ist hier jetzt, warum ich in der Mainklasse keine neue SpecialRootGroup zu einer SpecialRoot hinzufügen kann, obwohl diese SpecialRootGroup ja von RootGroup erbt, was die Bedingung für den Parameter ist.
Jede Hilfe ist sehr willkommen
Bye The_Unknown