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) {
}
}
}Génériques - types incompatibles
ce code produit
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
Pouvez-vous expliquer en détail ce code incorrect.
Je pense que nouveau conteneur sera généralisé avec le type compatible avec rappel
Un peu inutile, puisque 'String' est une classe' final'. – Bohemian
@Bohemian Imaginez que c'est Numéro – gstackoverflow
Dans ce cas, utilisez 'Number', car il existe des raisons valables d'utiliser' Number' dans les génériques mais pas très nombreux pour 'String'. – Makoto