Class<? extends Integer>
compilará bien, pero Integer
es un tipo final, por lo que no tiene sentido usarlo como un límite superior (nada lo hará extend
).Comodín con límite superior final
Si intenta utilizar un tipo final como un límite superior para un parámetro de tipo, obtendrá una advertencia del compilador:
El tipo de parámetro T no debe ser limitada por el tipo Integer final. tipos finales no se pueden ampliar
Por qué sería el uso de un tipo final como un límite superior para un comodín ser perfectamente bien, pero lanzar una advertencia para un parámetro de tipo? ¿Por qué Java incluso permite que los comodines estén delimitados por un tipo superior final?
Me parece que el compilador podría darse cuenta de que la 'Clase extends Integer> 'devuelto desde su segundo ejemplo es compatible con' Clase 'porque' Integer' es final. Pero supongo que eso agregaría más complejidad al compilador que su valor. Tal vez la advertencia es específica de Eclipse: Eclipse Juno con JDT 3.8.0. –
Jeffrey