添加到集合的元素应该是对象。为什么我可以添加原始数据类型呢?

时间:2014-05-19 07:24:51

标签: java collections

import java.util.*;
       class Ball{
         public static void main(String args[])
         {
            ArrayList <Integer> al = new ArrayList<Integer>();
            al.add(new Integer(1));
            System.out.println(al);
            }   
         }

我正在阅读Herbert Schildt的完整参考Java 2,我看到了这个片段。 它说

The program begins by creating a collection of integers.

You cannot store primitive data types in a collection

 so objects of type Integer are created and stored.

但是我尝试使用al.add(1)并且它有效。怎么样? (在这种情况下,1是原始数据类型而不是对象)

2 个答案:

答案 0 :(得分:2)

您的原始值将被装箱到适当的包装器对象(Integer,Long等)并添加到Collection中,并且此功能从java 5中添加。

如果使用旧版本(在Java 5之前),则在这种情况下会出现编译错误。

答案 1 :(得分:1)

1已自动退出;编译器为您处理。会发生什么事情,在运行时你的添加真的是:

al.add(Integer.valueOf(1));

请注意,从Integer 删除 List是件很难的,因为你有两个删除方法:一个删除一个元素给定索引(.remove(int))和删除列表中的对象(.remove(T))。

因此,如果您要从列表中删除对象 1,则必须.remove(Integer.valueOf(1)) ...