pn1*_*ude 6 java generics collections
我通常键入我的地图声明,但是正在做一些maint并找到一个没有输入.这让我想到了(哦不!).Map声明的默认输入是什么.考虑以下:
Map map = new HashMap();
map.put("one", "1st");
map.put("two", new Integer(2));
map.put("three", "3rd");
for (Map.Entry entry : map.entrySet()) {
System.out.println(entry.getKey() + " -> " + entry.getValue());
}
Run Code Online (Sandbox Code Playgroud)
Map.Entry上的类型不兼容时出现此错误.所以,如果我输入声明:
Map<Object, Object> map = new HashMap();
Run Code Online (Sandbox Code Playgroud)
一切顺利.那么在声明中设置的默认类型是什么?还是我错过了别的什么?
没有默认类型.
Java泛型中的类型仅用于编译时检查.它们在运行时被删除,基本消失了.
将泛型视为静态帮助程序,以便a)更好地记录代码,以及b)为类型安全启用一些有限的编译时检查.
类型是java.lang.Object。
for构造采用Iterable类型并调用其迭代器方法。由于Set不是使用泛型类型,因此迭代器返回Object类型的对象。这些需要显式转换为Map.Entry类型。
Map map = new HashMap();
map.put("one", "1st");
map.put("two", new Integer(2));
map.put("three", "3rd");
for (Object o : map.entrySet()) {
Map.Entry entry = (Map.Entry) o;
System.out.println(entry.getKey() + " -> " + entry.getValue());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2582 次 |
| 最近记录: |