Java 为什么SpotBugs会突出显示用org.jetbrains.annotations.NotNull annotation标记的方法中不一致的错误消息

Java 为什么SpotBugs会突出显示用org.jetbrains.annotations.NotNull annotation标记的方法中不一致的错误消息,java,intellij-idea,spotbugs,Java,Intellij Idea,Spotbugs,下面是用org.jetbrains.annotations.NotNull标记的方法的小代码片段。我发现spotbug为这些方法带来的错误与它们内部实际发生的情况不一致 // Here SpotBugs informs that method that was marked non null might return null. @NotNull public List<String> getList(String value) { return Collections.em

下面是用org.jetbrains.annotations.NotNull标记的方法的小代码片段。我发现spotbug为这些方法带来的错误与它们内部实际发生的情况不一致

// Here SpotBugs informs that method that was marked non null might return null.
@NotNull
public List<String> getList(String value) {
    return Collections.emptyList();
}
在第二个示例中,SpotBugs将@NotNull注释视为非null检查,因此将其视为冗余。诚然,在上述示例中,有问题的方法不可能返回空值,但我希望SpotBugs将有问题的注释视为契约标记。的确,此注释可能会导致添加notnull检查,但仅限于在Itellij IDEA中编译的代码中。 此外,我认为第一个示例的结果(注释被视为契约)与第二个示例的结果(注释被视为空检查)相矛盾


所以我的问题是,Spotbug以如此奇怪的方式对待org.jetbrains.annotations.NotNull的原因是什么?

请分享Spotbug报告。
// Here SpotBugs informs about redundant null check.
@NotNull
public String returnNotNullString() {
    return getString();
}

private String getString() {
    return "Hello";
}