folgenden Code produzieren Fehler zu Arraylist:inkompatible Typen: Arraylist <C<CAP#1>> kann nicht konvertiert werden <C<?>>
class A {
public static class C<T> {
public ArrayList<C<T>> lst;
}
public void main(String[] args) {
C<?> o = new C<>();
ArrayList<C<?>> l = o.lst;
}
}
Fehlermeldung:
a.java:10: error: incompatible types: ArrayList<C<CAP#1>> cannot be converted to ArrayList<C<?>>
ArrayList<C<?>> l = o.lst;
^
where CAP#1 is a fresh type-variable:
CAP#1 extends Object from capture of ?
Er sagt, dass Typen unterschiedlich sind, aber wenn ich ersetzen? für T in dann wird es ArrayList<C<T>>
selbe wie Art der Liste l.
Was ist los mit meiner Argumentation?