Betrachten Sie die folgende Methode doSomething(List<Object>)
, die List<Object>
als Parameter akzeptiert.Warum Liste <String> ist nicht akzeptabel als Liste <Object>?
private void doSomething(List<Object> list) {
// do something
}
nun unter Code-Schnipsel betrachten, die doSomething()
zu nennen versucht, wo ich versuche List<String>
zu doSomething()
List<Object> objectList;
List<String> stringList;
doSomething(stringList); // compilation error incompatible types
doSomething(objectList); // works fine
Code unten wirft
Kompilierungsfehler Auch passierenobjectList = stringList; // compilation error incompatible types
Meine Frage ist, warum List<String>
kann nicht an eine Methode übergeben werden, die List<Object>
akzeptiert?
Check out this: http://docs.oracle.com/javase/tutorial/extra/generics/subtype.html –
'List extends Object> 'soll das funktionieren lassen – AbstractChaos
@AbstractChaos true, solange" do something "nicht mit" List # add (...) ' – Marco13