我知道when comparing String
s, you should use .equals()
not ==
,我理解这个的原因。但是我有时会忘记并错误地将字符串与==
进行比较。我希望如果Eclipse(比我聪明得多),会通过执行以下一项或多项操作来警告我:
在Eclipse 3.5中,您可以通过转到Window>让Eclipse警告您所有类型的事情。偏好>编译器>错误/警告,但遗憾的是“将字符串与==而不是.equals()进行比较”似乎不是其中之一。我只是错过了吗?有没有机会在将来的版本中添加它?
编辑:我宁愿使用Eclipse的内置功能,而不必下载插件。但是,我认为在答案中提及具有此功能的插件仍然有用。答案 0 :(得分:18)
https://bugs.eclipse.org/bugs/show_bug.cgi?id=39095
错误39095 - RFE:使用==
比较非基元时发出警告如果编译器在使用==进行比较时可以允许警告,那就太好了 非原始类型,使String与==进行比较,同时采用有效的方法 如果你是实习并使用字符串池,可以作为编译时捕获 警告而不是运行时非明显的破损..
答案 1 :(得分:16)
Eclipse永远不会告诉你。 Findbugs或PMD可能可以。
编辑:我说Eclipse永远不会告诉你。
因为代码a == b
没有像java代码那样出错。如果您需要一些额外的帮助,这是其他插件可以提供帮助的地方。
答案 2 :(得分:0)
与之前的评论中所说的相反,FindBug(现在?)可以检测到这种比较错误。 就我而言,FindBug能够比PMD更好地报告错误。
有两种错误报告类别:
我想补充辩论“这个警告有用吗?”:
我已经从HTML5游戏中转换了大量JavaScript代码,将其转换为Android游戏。 在JavaScript中,字符串与“==”进行比较。 它们被转换为Java。 所以我需要一个工具来绝对确定我用“.equals(”。
替换所有答案 3 :(得分:-1)
我认为你不能。
使用==
是一种有效的java语言功能。在某些情况下,您可能希望做到这一点。什么?
可能有一天,一些程序员希望IDE在写i = 10
(而不是i == 10
)时警告他
幸运的是,这是 human 接管机器的地方,我们都有工作:)
可悲的是,有太多的错误系统:(
我相信,随着时间的推移,你将养成使用equals()
for String