我正在查看有人写过的代码,并想知道我是否遗漏了一些东西
假设
List<Integer> runUids = new ArrayList<Integer>();
以及稍后作为循环的一部分
int runUID = runUidsAL.get(i).intValue();
有什么理由需要在这里调用intValue()
吗?不要以为这里需要它。你呢?
答案 0 :(得分:10)
你没有这么说,但我认为runUID
是int
。
没有必要在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 类之间转换为其原始表示。
答案 5 :(得分:0)
例如,您可以将int分配给long,但不能分配给Integer对象。另一方面,如果Integer对象为null,则intValue()可能会产生NullPointerException。