作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
测试测试 = 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
}
}
最佳答案
结果是不同的,因为当你写这个
Test test = new Test() {};
您指示编译器为您创建一个新的匿名类型。该类型派生自 Test
,并且可以(但不必)重写其方法。
在您的情况下,该类型不会覆盖任何方法,但它是不同的类型。
关于java泛型和反射,为什么结果不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44711863/
我是一名优秀的程序员,十分优秀!