为什么Java泛型不支持基本类型?

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

例如,这可以正常工作:

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

但这是不允许的:

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

回答:

ava中的泛型是一个完全编译时的结构-编译器将所有泛型使用转换为正确的类型。这是为了保持与以前的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),而原始类型则不是。因此它们不能用于泛型。

以上是 为什么Java泛型不支持基本类型? 的全部内容, 来源链接: utcz.com/qa/434873.html

回到顶部