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

问题描述 投票:12回答:3

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

java eclipse boxing autoboxing
3个回答
6
投票

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


6
投票

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

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


3
投票

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

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

根据对“删除”这个问题的讨论,其他人遇到了类似的问题,他们的int出乎意料地表现得像整数,但我不明白这是怎么回事。 Why aren't Java Collections remove methods generic?(见ScArcher2的评论)

© www.soinside.com 2019 - 2024. All rights reserved.