java - List中的java泛型语句
问题描述
有人可以总结一下有什么区别:
List<SpecificType>
List<Object>
List
假设我有:
class Car {
void foo() {}
}
public class Generics_Statement {
public static void main(String[] args) {
Car c1 = new Car();
Car c2 = new Car();
Car c3 = new Car();
List<Car> carList = List.of(c1,c2,c3);
System.out.println(carList.get(0).getClass()); // >>> class Car
System.out.println(carList.get(0) instanceof Car); // >>> true
carList.get(0).foo();
List<Object> objList = List.of(c1,c2,c3);
System.out.println(objList.get(0).getClass()); // >>> class Car
System.out.println(objList.get(0) instanceof Car); // >>> true
// objList.get(0).foo();
List rawList = List.of(c1,c2,c3);
System.out.println(rawList.get(0).getClass()); // >>> class Car
System.out.println(rawList.get(0) instanceof Car); // >>> true
// rawList.get(0).foo();
}
}
我确实理解声明正确类型的重要性,绝对应该List<Car>
在这里使用。
我明白应该避免使用原始类型。
而且我理解一个事实objList
并且rawList
不能使用Car.foo
,因为我没有明确声明中的类型List
我不明白的是:
- 似乎它仍然识别 and 中的元素
objList
,rawList
并返回正确的类并确认该元素是 的实例Car
。为什么?如果它知道Class
元素的,它不应该能够调用Car.foo
吗? - 是
List<Object>
和List
一样的东西吗? - 还有其他我不知道的区别吗?
解决方案
推荐阅读
- dart - @require 参数“#”的值不能为“null”,因为它的类型
- python - 如何在 Python3 中正确使用字典的集合键?
- python-3.8 - 错误:在 pip 21.1.2、python3.8 64bit 上找不到满足要求 tensorflow==2.4.1(来自版本:无)的版本
- c# - 使用 Linq 针对 Entity Framework 显示等效于 SQL 数据透视表
- sas - 使用宏和 proc 报告设置标题
- python-3.x - 有什么作用!在 Python 中是什么意思?
- python - 如何使用 TD Ameritrade api 使用 python 创建监视列表?
- python - gpflow 示例中的 2D 实现和获取 MAE、RMSE 错误
- c++ - 如果我们为 const integer 分配这样的值可以吗?
- python-3.x - 为什么我的 Pygame 窗口背景无法加载?