Es gibt eine Verwendung, die Guava verwenden könnte. Wie Sie wissen, gehen Typen nach der Kompilierung verloren, aber wenn der Typ auf Klassenebene korrigiert wird, ist er nach der Kompilierung nicht verloren und kann durch Reflexion extrahiert werden. Ich werde den Code einfügen, um den Typ in einer Minute zu extrahieren.
bearbeiten Ich weiß nicht, ob der Code von Nutzen ist, aber hier ist 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);
}
}
}
Ich habe 'TypeToken' schon seit einiger Zeit benutzt, aber nie die Subtilität und Klugheit geschätzt. Das ist ziemlich beeindruckend – Ray