这个问题在这里已经有答案了:
自动装箱/拆箱在java中是如何工作的(4个答案)
上个月关门了。
因此,我遇到了一个由以下示例引起的错误:i have static method
private static Foo findFoo(int id) {
//we use id here not important
}
然后我在另一个方法中使用它,比如
private static updateFoo(final Integer id, final String newData) {
final Foo existingData = findFoo(id);
// use existing data and update or make new
}
问题是什么时候 updateFoo
被称为 null
在 id
争论,争论 intValue()
在调用时隐式调用(我认为) findFoo(id)
导致npe。
我认为java强制执行强类型,防止在需要原语时将对象传递给参数。有没有一个一般的规则,在这里当简单的呼吁?编译器/ide是否可以接收到这一点,并可能执行或警告?
1条答案
按热度按时间5q4ezhmt1#
如果使用 Package 器类作为其原始计数器部分,则通常会发生这种情况。
int
不能为空,因此必须调用intValue()
到 Package 器类。您可以在调用之前执行空检查
findFoo()
或者直接使用原语int
为了updateFoo()
或中的 Package 器类findFoo()
.我认为java强制执行强类型,防止在需要原语时将对象传递给参数。
整数的类型适合,因此它的类型被覆盖。这只是一个隐式铸造(拆箱)在这种情况下,这是完全罚款。