gpt4 book ai didi

java - 为什么 Java 泛型不支持原始类型?

转载 作者:行者123 更新时间:2023-12-01 16:33:39 24 4
gpt4 key购买 nike

为什么 Java 中的泛型适用于类,但不适用于原始类型?

例如,这工作正常:

List<Integer> foo = new ArrayList<Integer>();

但是这是不允许的:

List<int> bar = new ArrayList<int>();

最佳答案

Java 中的泛型完全是编译时构造 - 编译器将所有泛型使用转换为正确类型的强制转换。这是为了保持与以前的 JVM 运行时的向后兼容性。

这个:

List<ClassA> list = new ArrayList<ClassA>();
list.add(new ClassA());
ClassA a = list.get(0);

变成(大致):

List list = new ArrayList();
list.add(new ClassA());
ClassA a = (ClassA)list.get(0);

因此,任何用作泛型的东西都必须可转换为对象(在本例中 get(0) 返回一个 Object),并且原始类型是“t。因此它们不能用于泛型。

关于java - 为什么 Java 泛型不支持原始类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62004834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com