在哪种情况下,您应该使用原始类型(
int)还是引用类型(Integer)?
根据经验,
int除非必须使用包装原始语言的类,否则我将使用原始语言(例如)。
一种情况是必须使用包装器类,例如
Integer在使用泛型的情况下,因为Java不支持将原始类型用作类型参数:
List<int> intList = new ArrayList<int>(); // Not allowed.List<Integer> integerList = new ArrayList<Integer>(); // Allowed.
而且,在许多情况下,我将利用autoboxing和unboxing的优势,因此不必显式执行从原语到其包装器类的转换,反之亦然:
// Autoboxing will turn "1", "2", "3" into Integers from ints.List<Integer> numbers = Arrays.asList(1, 2, 3);int sum = 0;// Integers from the "numbers" List is unboxed into ints.for (int number : numbers) { sum += number;}另外,作为附加说明,当从原语转换为其包装器类对象时,并且不需要对象的唯一实例时,请使用
valueOf包装器方法提供的方法,因为它执行缓存并为某个值返回相同的实例,从而减少了创建的对象数:
Integer i1 = Integer.valueOf(1); // Prefer this.Integer i2 = new Integer(1); // Avoid if not necessary.
有关这些
valueOf方法的更多信息,该方法的API规范
Integer.valueOf可以用作这些方法在基元的包装类中的行为的参考。



