Pourquoi les génériques java sont-ils si délicats? Je pensais que j'ai finalement compris, mais éclipse me donne une erreur à la ligne dans somOtherMethod ci-dessous en utilisant l'une des méthodes getOuterList ci-dessous.liste générique simple en java
protected List<?> getOuterList() {
// blah blah
}
protected List<? extends Object> getOuterList() {
// blah blah
}
protected void someOtherMethod() {
...
getOuterList().add((MyObject)myObject); //compile error
...
}
MISE À JOUR: ok - donc je comprends maintenant l'erreur. C'était un manque de compréhension de ma part de ce que signifie réellement List<?>
ou List<? extends SomeObject>
. Dans le premier cas, je pensais que cela signifiait une liste qui pourrait contenir n'importe quoi. Dans le dernier cas, j'ai supposé que c'était une liste d'un groupe d'objets qui étendent SomeObject. La représentation correcte de ma compréhension serait juste List<Object>
et List<SomeObject>
(sans les extensions). Je pensais étend m'a aidé à résoudre un problème qu'ils ne le font pas. Donc, voici où mon vrai problème réside:
public interface DogKennel {
public List<Dog> getDogs();
}
public class GreyHoundKennel implements DogKennel {
protected List<GreyHound> greyHounds;
public List<GreyHound> getGreyHounds() {
return this.greyHounds;
}
public List<Dog> getDogs() {
// Is there no way to handle this with generics
// w/out creating a new List?
return getGreyHounds(); //compiler error
}
}
Quelle est l'erreur? – jjnguy