0
public static void findbugDoesNotTrigger(List<String> object) {
    String string2 = "AnyString";

    if(object.get(0) == string2) {
        System.out.println("Does not matter at all");   
    }
}

在这里,我预计 ES_COMPARING_STRINGS_WITH_EQ 或 ES_COMPARING_PARAMETER_STRING_WITH_EQ 会触发,但事实并非如此。我在这里想念什么?

4

2 回答 2

0

我怀疑你的代码是否已经

if(string2 == object.get(0)) {

该规则会被解雇。

于 2018-04-27T04:21:50.487 回答
0

您是名为Type Erasure的 Java 设计原则的受害者。

因此,当 FindBugs 查看您编译的代码时,它会看到您将 aObject与 a进行比较String,这可能是正确的,因为您可能想要断言它们是同一个对象。

您可以执行以下操作来触发错误:

public static void findbugDoesNotTrigger(List<String> object) {
    String string1 = object.get(0);
    String string2 = "AnyString";
    if(string1 == string2) {
        System.out.println("Does not matter at all");   
    }
}
于 2018-04-26T08:38:07.303 回答