bien, así que Java no permite lo siguiente:Genéricos y comodines: Java le gusta "nueva Foo <Bar<?>>"
Foo<?> hello = new Foo<?>();
Esto hace sentido-- después de todo, ¿cuál es el punto de genéricos si estás solo voy a boxear/unbox todo de todos modos?
Lo que es raro, es Java no permite esto:
Foo<Bar<?>> howdy = new Foo<Bar<?>>();
Por supuesto, este hecho lleva a cabo más, aunque en algún momento, no habría un yeso para conseguir lo Bar
está trabajando. Pero si Java está bien con algunos especificidad, ¿por qué no se permite esto ?:
Foo<? extends Mal> bonjour = new Foo<? extends Mal>();
La única razón por la que pido es que estoy fijación a confiar en el "comodín dentro de un parámetro de clase de un constructor ", y seriamente quisiera saber las implicaciones/intenciones detrás de esto.
EDIT: Para aclarar mi pregunta, ¿con qué motivo se permiten/rechazan estas declaraciones? Soy consciente de que "Java no permite comodines en los constructores", pero la pregunta es: ¿por qué toda esta rareza? ¿Por qué no se permiten comodines delimitados si los comodines anidados están bien?
Creo que entiendo lo que estás diciendo: si un constructor acepta una clase param 'Mal', la instancia inherentemente acepta cualquier cosa que sea una subclase de' Mal' (aunque una _referencia_ a la instancia no podría apuntar a una genérico con una subclase a menos que se especifique un comodín.) – Philip
Mirando mi comentario más de un año después ... Estoy bastante seguro de que esa es una de las cosas más incomprensibles que he dicho. – Philip