use*_*929 10 java generics compiler-errors
以下为什么不编译?编译器为+打印行中的符号提供错误.
public class Test<T> {
HashMap<Integer,Integer> m = new HashMap<Integer, Integer>();
public static void main(String[] args) {
Integer zero1 = 0;
Integer zero2 = 0;
Test t = new Test();
t.m.put(1,zero1);
t.m.put(2,zero2);
System.out.println(t.m.get(1)+t.m.get(2)==t.m.get(2));
}
}
Run Code Online (Sandbox Code Playgroud)
我理解类型擦除,但m是a HashMap<Integer,Integer>,它根本不应该取决于类型<T>.为什么编译器会拒绝这个?删除<T>第一行允许编译,但我不明白为什么这不应该工作.
这是一个编译器错误还是这种行为背后有任何逻辑?
| 归档时间: |
|
| 查看次数: |
535 次 |
| 最近记录: |