Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么自动装箱标记为警告?_Java_Eclipse_Boxing_Autoboxing - Fatal编程技术网

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

Java 为什么自动装箱标记为警告?,java,eclipse,boxing,autoboxing,Java,Eclipse,Boxing,Autoboxing,我理解自动取消装箱应该小心,因为正在取消装箱的引用可以为空。为什么自动装箱也被标记为警告?我在这里遗漏了一些陷阱吗?如果您不希望出现性能问题(在微观优化方面),您可以安全地禁用此警告。这只是一个指示,以防你不知道自动装箱发生在这里。在业务逻辑代码中,如果有I/O开销(由于DB事务或磁盘访问),自动装箱几乎不会成为性能问题。 < P>我将禁用此Eclipse警告,但以下文章使我考虑不这样做。我仍然不能完全确定,但在我看来,这可能是避免自动装箱的好理由 自动装箱可能有助于开发人员创建与集合的“删除”

我理解自动取消装箱应该小心,因为正在取消装箱的引用可以为空。为什么自动装箱也被标记为警告?我在这里遗漏了一些陷阱吗?

如果您不希望出现性能问题(在微观优化方面),您可以安全地禁用此警告。这只是一个指示,以防你不知道自动装箱发生在这里。在业务逻辑代码中,如果有I/O开销(由于DB事务或磁盘访问),自动装箱几乎不会成为性能问题。

< P>我将禁用此Eclipse警告,但以下文章使我考虑不这样做。我仍然不能完全确定,但在我看来,这可能是避免自动装箱的好理由


自动装箱可能有助于开发人员创建与集合的“删除”方法相关的错误,尽管这可能是一个相当模糊的错误

当我使用随机数生成器选择要从ArrayList中删除的项的索引时,我遇到了这个错误。生成器返回了一个长原语,我无意中尝试将其用作List.remove(int-index)的参数。编译器将long转换为long,并在List.remove(Object o)中使用它,这提供了完全不同的行为。幸运的是,assert语句很快就发现了错误

根据这个关于“remove”问题的讨论,其他人遇到了类似的问题,他们的int意外地像一个整数,尽管我不明白这是怎么发生的。
(请参见ScArcher2的评论)

My out-of-the-box eclipse没有显示自动装箱和取消装箱的警告。您使用的是什么类型/版本的eclipse?您可以在Project Properties->Java Compiler->Errors/warnings->Potential Programming Problems(项目属性->Java编译器->错误/警告->潜在编程问题)中启用它(以及其他不同的警告)。请参阅:这是一个将装箱和取消装箱分开的功能请求。在eclipse中,仅打开装箱警告而不关闭非装箱警告是不可能的。你会建议关掉(两个都关掉)吗?我正在做一个大学项目,导师希望在最大警告级别上没有警告。(允许选择性地忽略警告)@Artium在您的情况下,您可以使用显式转换,以便从
int I=Integer.int value()
Integer I=new Integer(I)
中可以看到操作。在这之后,编译器就不会抱怨了。有一个与分离这些警告相关的错误:自动装箱从来都不是问题,但是自动取消装箱为NullPointerException提供了空间,这不是那么容易注意到,特别是当您第一次点击它时。例如,您的方法接收到一个“整数值”,然后调用另一个需要“int-value”的方法,因此如果您接收到null,则调用anotherMethod(value)可能会抛出NullPointerExceptionargument@stacker您应该使用
Integer I=Integer.valueOf(I)
,这样就不会为较小的值创建新实例(请参阅)这是重载函数的预期行为,而不是bug。@KarlRichter我很确定这个答案的意思是“…可以帮助开发人员创建bug…”(我完全同意)。是的,这就是我的意思。谢谢你建议用语言来澄清这个问题。我一直在努力理解“警告”是专门用来警告开发人员他们可能已经创建了一个bug。