¿Cuál es la diferencia entre las siguientes definiciones de tipojava limitada definición de tipo genérico
<E extends Number>
y
<? extends Number>
Cheers, Don
¿Cuál es la diferencia entre las siguientes definiciones de tipojava limitada definición de tipo genérico
<E extends Number>
y
<? extends Number>
Cheers, Don
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.
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? –
¿Sería cierto que debe usar la segunda definición solo wh? es que necesita consultar el tipo (a través del 'alias' E)? –
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 :) –