Tengo este bit de observaciones (contra-intuitivas) sobre la notación comodín genérica utilizada en colecciones. El propósito de la notación comodín List<? extends T>
es permitir la asignación de una lista (de subtipos de T) a la referencia de la lista de '? de T '. Su propósito no es específicamente permitir la adición de elementos de subtipos de T a la Lista (de '? De T'), lo cual es posible incluso en un List<T>
.¿Intención principal o propósito de la notación comodín? extiende T '
List<Number> list = new ArrayList<Integer>(); // invalid , List<Integer> is not assignable to List<Number>
List<Number> list = new ArrayList<Number>() ; // OK
list.add(new Integer(1)); // valid , '? extends Number' not needed!
List<? extends Number> list1 = new ArrayList<Integer>(); // Valid , because of notation '? extends Number'
¿Es correcta mi observación?
¿Intentaste compilarlo? – Kaj
@Kaj, sí, y he indicado los errores de compilación en las líneas respectivas – Bhaskar