Test test = new Test() {}; Es gibt nichts in {}, warum das Ergebnis anders ist.Java Generika und Reflexion, warum anderes Ergebnis
public class Test<T> {
private final TypeToken<T> typeToken = new TypeToken<T>(getClass()) {};
private final Type type = typeToken.getType();
public void foo() {
System.out.println(this.type);
}
public static void main(String[] args) {
Test<Integer> test = new Test<Integer>() {};
Test<Integer> test2 = new Test<Integer>();
test.foo();// class java.lang.Integer
test2.foo();//T
}
}
Welches Ergebnis? Wo ist der Unterschied? Beachten Sie, dass Sie in einem Fall eine Instanz von "Test" erstellen und in der anderen eine Instanz einer anonymen Unterklasse von "Test" erstellen. –