Mag*_*aug 8 java generics type-erasure
如果我编译下面的代码javac Test.java -Xlint:unchecked,c4由于类型擦除,对变量的赋值会产生警告.这里的类型是微不足道的,只是例子.
为什么对象引用g3会丢失有关成员变量的类型信息Comparator<String> strCmp?为什么不c1发出相同的警告,唯一的区别是该类不是通用的?
import java.util.Comparator;
public class Test {
NormalClass n = new NormalClass();
Comparator<String> c1 = n.strCmp;
GenericClass<Long> g1 = new GenericClass<Long>();
Comparator<String> c2 = g1.strCmp;
GenericClass<?> g2 = new GenericClass<Long>();
Comparator<String> c3 = g2.strCmp;
GenericClass g3 = new GenericClass<Long>();
Comparator<String> c4 = g3.strCmp;
}
class NormalClass {
public Object t;
public Comparator<String> strCmp;
}
class GenericClass<T> {
public T t;
public Comparator<String> strCmp;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46 次 |
| 最近记录: |