测试测试= new Test(){}; {}中没有任何内容,为什么结果不同。
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
}
}
答案 0 :(得分:1)
结果不同,因为当你写这个
Test test = new Test() {};
指示编译器为您创建一个新的匿名类型。该类型派生自Test
,并且可以(但不必)覆盖其方法。
在您的情况下,类型不会覆盖任何方法,但它是一种不同的类型。