方法—java在将整数作为参数传递时隐式调用intvalue

lzfw57am  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(371)

这个问题在这里已经有答案了

自动装箱/拆箱在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 被称为 nullid 争论,争论 intValue() 在调用时隐式调用(我认为) findFoo(id) 导致npe。
我认为java强制执行强类型,防止在需要原语时将对象传递给参数。有没有一个一般的规则,在这里当简单的呼吁?编译器/ide是否可以接收到这一点,并可能执行或警告?

5q4ezhmt

5q4ezhmt1#

如果使用 Package 器类作为其原始计数器部分,则通常会发生这种情况。 int 不能为空,因此必须调用 intValue() 到 Package 器类。
您可以在调用之前执行空检查 findFoo() 或者直接使用原语 int 为了 updateFoo() 或中的 Package 器类 findFoo() .
我认为java强制执行强类型,防止在需要原语时将对象传递给参数。
整数的类型适合,因此它的类型被覆盖。这只是一个隐式铸造(拆箱)在这种情况下,这是完全罚款。

相关问题