Hay un uso que Guava puede usar. Como sabe, los tipos se pierden después de la compilación, pero si el tipo se especifica en el nivel de clase, no se pierde después de la compilación y se puede extraer por reflexión. Pondré el código para extraer el tipo en un minuto.
Editar no sé si el código es de alguna utilidad, pero aquí es
public class Reflect {
public static void main(String[] args) {
Super<String> aStringSuper = new Super<String>() {};
aStringSuper.method();
Super<List<Integer>> aListSuper = new Super<List<Integer>>() {};
aListSuper.method();
}
}
class Super<T> {
public void method() {
Type genericSuperclass = this.getClass().getGenericSuperclass();
ParameterizedType parameterizedType = (ParameterizedType) genericSuperclass;
for(Type type : parameterizedType.getActualTypeArguments()) {
System.out.println(type);
}
}
}
He estado usando 'TypeToken' durante algún tiempo, pero nunca he apreciado la sutileza y la astucia. Eso es bastante asombroso – Ray