Perché i generici Java sono così complicati? Ho pensato di aver finalmente capito, ma eclipse mi dà un errore sulla linea in somOtherMethod di seguito utilizzando uno dei seguenti metodi getOuterList.elenco generico semplice in java
protected List<?> getOuterList() {
// blah blah
}
protected List<? extends Object> getOuterList() {
// blah blah
}
protected void someOtherMethod() {
...
getOuterList().add((MyObject)myObject); //compile error
...
}
UPDATE: ok - così ho capito l'errore ora. Era una mancanza di comprensione da parte mia di ciò che significa veramente List<?>
o List<? extends SomeObject>
. Nel primo caso, pensavo significasse una lista che potesse contenere qualsiasi cosa. In quest'ultimo caso, ho pensato che fosse un elenco di un gruppo di oggetti che estendono SomeObject. La corretta rappresentazione della mia comprensione sarebbe solo List<Object>
e List<SomeObject>
(senza le estensioni). Pensavo che estendere mi aiutasse a risolvere un problema che loro non hanno. Quindi, ecco il mio vero problema:
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
}
}
Qual è l'errore? – jjnguy