为什么自动装箱被标记为警告?

Art*_*ium 12 java eclipse autoboxing boxing

我知道自动解除拳击应该小心,因为未被装箱的引用可以为空.为什么自动装箱也被标记为警告?我在这里遗失了一些陷阱吗?

sta*_*ker 6

如果您不期望性能问题(在微优化方面),您可以安全地禁用此警告.这只是一个指示,以防你不知道自动拳击发生在这里.在业务逻辑代码中,您有I/O开销(由于DB事务或磁盘访问),自动装箱从来都不是问题.

  • @stacker你应该使用`Integer I = Integer.valueOf(i)`以便不为小值创建新实例(参见[javadoc](http://docs.oracle.com/javase/7/docs/api) /java/lang/Integer.html#valueOf(int))) (4认同)
  • 自动装箱从来不是一个问题,但自动拆箱为NullPointerException提供了空间,这不容易被注意到,特别是当你第一次点击它时.例如,您的方法接收"整数值",然后调用另一个期望"int value"的方法,因此如果您收到null参数,则调用anotherMethod(value)可能会抛出NullPointerException (2认同)

San*_*ors 6

我打算禁用这个Eclipse警告,但下面的文章让我考虑不要.我仍然不完全确定,但在我看来,这些可能是避免自动装箱的好理由.

https://effective-java.com/2010/05/the-advantages-and-traps-of-autoboxing/