2012-04-26 18 views
28

La firma de java.util.Collections.max se ve así:<T & E se extiende Objeto> vs <T extends E>

pública estática < T se extiende Objeto & comparable <? super T >> T max (colección de colección);

Por lo que entiendo, que básicamente significa que T debe ser a la vez un java.lang.Object y una java.lang.Comparable<? super T>>,

Sin embargo, puesto que cada java.lang.Comparable es también un java.lang.Object, ¿cuál es la diferencia entre la firma anterior y esta por debajo ? :

public static < T extends Comparable <? super T >> T max (colección de colección);

Respuesta

28

Para preservar la compatibilidad binaria: Es descrito completamente here. La segunda firma realmente cambia el tipo de devolución del método al Comparable y pierde la generalidad de devolver un Object. La firma original conserva ambos.

+0

Gracias por el enlace =) Por cierto, ¿conoce alguna herramienta para examinar las firmas borradas después de la compilación? – Pacerier

+0

No es que yo sepa, pero tal vez [esto] (http://blog.xebia.com/2009/03/12/a-general-purpose-utility-to-retrieve-java-generic-type-values/) puede dar algunas pistas sobre el tema. También sugiero leer la sección sobre "Tipo borrado" en las Preguntas frecuentes sobre genéricos de Angelika Langer. – nobeh

+0

Ok gracias por la ayuda =) – Pacerier

Cuestiones relacionadas