public class HelloWorld{
public static void main(String[] args) {
List<? extends Number> callback = new ArrayList<Long>();
new Container<>().test(callback);
}
public static class Container<T extends Number> {
public void test(List<T> some) {
}
}
}Generics - inkompatible Typen
dieser Code erzeugt
HelloWorld.java:7: error: incompatible types: List<CAP#1> cannot be converted to List<Number>
new Container<>().test(callback);
^
where CAP#1 is a fresh type-variable:
CAP#1 extends Number from capture of ? extends Number
Können Sie in Details dieser Code falsch erklären.
Ich gehe davon aus, dass neue Container wird mit Typ mit Rückruf Zum einen
Etwas sinnlos, da 'String' eine' final' Klasse ist. – Bohemian
@Bohemian Stellen Sie sich vor, dass es die Nummer ist – gstackoverflow
Verwenden Sie in diesem Fall 'Number', da es berechtigte Gründe gibt,' Zahl' in Generika, aber nicht sehr viele für 'String' zu verwenden. – Makoto