2008-12-07 20 views

Respuesta

22

Esta versión:

<? extends Number> 

puede aparecer en un método/tipo no genérico, y básicamente significa "No me importa de qué tipo es, siempre que se derive de Number. No voy a utilizar realmente el tipo, sólo necesita que sea apropiada "

Esta versión:..

<E extends Number> 

requiere E para ser un parámetro de tipo Se le permite hacer más (por ejemplo, creando un ArrayList<E> más adelante) pero el parámetro de tipo extra puede complicar las cosas cuando realmente no los necesita.

+0

Más formalmente, ¿sería cierto que el segundo es un parámetro de tipo formal? definición, mientras que la primera es simplemente una definición de parámetro? –

+0

¿Sería cierto que debe usar la segunda definición solo wh? es que necesita consultar el tipo (a través del 'alias' E)? –

+0

No me gustaría decir en el primer comentario sin consultar la especificación (y me voy a la cama en un minuto). El segundo comentario parece razonable sin embargo. Comprueba lo que Josh Bloch tiene que decir en Java efectivo: probablemente lo cubra :) –

Cuestiones relacionadas