是否有任何工具可以针对以下类型的代码警告我:
if ( someClass.equals( someString ))
例如:
if ( myObject.getClass().equals( myClassName ))
这样的东西在 Java 中是合法的(等于一个对象)但是永远不会计算为真(一个类永远不能等于一个字符串)所以几乎可以肯定是一个错误。
我检查了 Eclipse、FindBugs 和 PMD,但似乎都不支持此功能?
最佳答案
是的,IntelliJ IDEA 有这样的检查,我相信它是默认启用的。它标记以下内容:
Class<?> clazz = String.class;
if (clazz.equals("foo")) {
//...
}
带有警告:
'equals()' between objects of inconvertible types.
可以通过“设置”->“项目设置”->“检查”启用/禁用检查,然后在“可能的错误”下选中/取消选中“不可转换类型的对象之间的‘equals()’。”
FindBugs 也应该用 "EC: Call to equals() comparing different types" 捕获这个错误检查。正如您所知,它可以与 Eclipse 集成。
虽然两者都不是 Elixir ;他们无法读懂你的想法。您最多只能希望它会产生误报而不是漏报。
关于java - 有什么可以警告我不要使用 type.equals(incompatibleType) 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7898279/