从Integer获取intValue,它有意义吗?

时间:2012-02-17 15:33:52

标签: java

我正在查看有人写过的代码,并想知道我是否遗漏了一些东西

假设

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

以及稍后作为循环的一部分

int runUID = runUidsAL.get(i).intValue();

有什么理由需要在这里调用intValue()吗?不要以为这里需要它。你呢?

6 个答案:

答案 0 :(得分:10)

你没有这么说,但我认为runUIDint

没有必要在intValue()返回的Integer对象上明确调用runUidsAL.get(i); Java将由auto-unboxing自动执行此操作。

答案 1 :(得分:2)

它就在那里,因为Integer扩展了Number。

Number n = new Integer(5);

int i = n.intValue();

第二行可能需要来自n的int值,并且可能不知道n是否用Integer或Double实例化。

答案 2 :(得分:2)

我几分钟前住过的真实情况:

我有一个Integer对象列表。每个Integer都是我要删除其他位置的列表的索引。

然后......我这样做了:

for (Integer index : positionsToRemoveList) {

   historyRecord.remove(index);
}

Java正在调用下一个方法

public boolean remove(Object object);

而不是:

public E remove(int location);

我的“historyRecord”列表没有被更新,因为Java试图通过Object而不是按位置删除。

正确的方法是:

for (Integer index : positionsToRemoveList) {

   historyRecord.remove(index.intValue());
}

这是我的真实故事:)

答案 3 :(得分:1)

Java 1.5及更高版本支持自动装箱和拆箱,您可以在不使用Integer的情况下将int分配给.intValue()

答案 4 :(得分:1)

整数是一个对象,而 int 是一个基元。

intValue()方法在 Integer 类之间转换为其原始表示。

http://mindprod.com/jgloss/intvsinteger.html

答案 5 :(得分:0)

例如,您可以将int分配给long,但不能分配给Integer对象。另一方面,如果Integer对象为null,则intValue()可能会产生NullPointerException。