猿问

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

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

为什么Java中的泛型使用类而不是原始类型?

例如,这很好:

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

但这是不允许的:

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


德玛西亚99
浏览 524回答 3
3回答

幕布斯7119047

Java中的泛型是一个完整的编译时构造-编译器将所有一般用途转换为正确的类型。这是为了与以前的JVM运行时保持向后兼容性。这是:List<ClassA>&nbsp;list&nbsp;=&nbsp;new&nbsp;ArrayList<ClassA>();list.add(new&nbsp;ClassA());ClassA&nbsp;a&nbsp;=&nbsp;list.get(0);转换为(大致):List&nbsp;list&nbsp;=&nbsp;new&nbsp;ArrayList();list.add(new&nbsp;ClassA());ClassA&nbsp;a&nbsp;=&nbsp;(ClassA)list.get(0);因此,任何用作泛型的东西都必须可转换为对象(在本例中)。get(0)返回Object),而原始类型则不是。所以它们不能用于仿制药。

12345678_0001

集合定义为需要从java.lang.Object..基本类型根本不这样做。
随时随地看视频慕课网APP

相关分类

Java
我要回答