小编典典

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

all

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

例如,这很好用:

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

但这是不允许的:

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

阅读 76

收藏
2022-05-12

共1个答案

小编典典

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);

因此,任何用作泛型的东西都必须可转换为 Object(在此示例中get(0)返回一个Object),而原始类型则不是。所以它们不能用于泛型。

2022-05-12