2010-07-30 14 views

Respuesta

7

Por una combinación de tipos anónimos, subclases y el hecho de que Java no borra por completo TODAS las declaraciones genéricas.

Si observa detenidamente el TypeLiteral tiene un constructor protegido, por lo que usa {} adicional al construir uno nuevo que crea una subclase anónima de TypeLiteral.

En Java las declaraciones genéricas se conservan en las declaraciones de clase y método, por lo tanto, si escribo esto.

public abstract class Class1<T> 
{ 
} 

public class Class2 extends Class1<Integer> 
{ 
} 

realmente puedo escribir código en Class1 que puede darse cuenta de que su propio tipo genérico es entero Si Clase 2 fue la subclase.

Consulte la API de java.lang.Class para conocer los métodos apropiados (tienen genérico en el nombre).