基本上,像Vector,ArrayList,HashMap等Java集合类不采用原始类型,如int.
在过去的日子里(Java 5之前),你不能这样做:
List myList = new ArrayList();
myList.add(10);
你必须这样做:
List myList = new ArrayList();
myList.add(new Integer(10));
这是因为10本身就是一个int. Integer是一个包装int原语的类,并且创建一个新的Integer()意味着你实际上正在创建一个Integer类型的对象.在自动装箱出现之前,你不能像在这里那样混合Integer和int.
所以外卖是:
integerBox.add(10)和integerBox.add(new Integer(10))将导致将Integer添加到integerBox,但这只是因为integerBox.add(10)透明地为您创建了Integer.两种方式可能不一定以相同的方式创建Integer,因为一个用新的Integer显式创建,而autoboxing将使用Integer.valueOf().我假设教程使integerBox成为某种类型的集合(它接受对象,而不是基元).
但从这个角度来看:
int myInt = 10;
Integer myInteger = new Integer(10);
一个是原始的,另一个是Integer类型的对象.