<分区>
类型 T 和 Object 有什么区别?
换句话说,List<T>
之间有什么区别?和 List<Object>
?
<分区>
类型 T 和 Object 有什么区别?
换句话说,List<T>
之间有什么区别?和 List<Object>
?
最佳答案
在运行时,没有区别:Java泛型是通过Type Erasure实现的, 因此在所有实现中都使用相同的类。
然而,在编译时,差异是巨大的,因为它可以让您避免每次使用对象时都进行强制转换,从而使您的代码看起来更清晰。
考虑这个例子:
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
for (Integer n : list) {
System.out.println(n+5);
}
这个编译和运行良好,也很容易阅读。如果你想使用 List<Object>
相反,代码看起来不那么干净:
List<Object> list = new ArrayList<Object>();
list.add(1);
list.add(2);
list.add(3);
for (Object o : list) {
// Now an explicit cast is required
Integer n = (Integer)o;
System.out.println(n+5);
}
不过,在内部,这两个代码片段对它们的 list
使用了完全相同的实现。对象。
关于java - type T 和 Object 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18467276/