接口中未调用的私有方法

Uncalled private method in an interface

我有一个带有 default 方法和 private 方法的 interface,其中 private 方法是从 default 方法调用的。

当运行 Spotbugs, it issues an error that the private method is never called: UPM_UNCALLED_PRIVATE_METHOD.

public interface Foo {

    default boolean foo(int value1, int value2) {
        return bar(value1 + value2);
    }

    private boolean bar(int value) {
        return value == 0;
    }

}

我做错了什么还是 Spotbugs 问题?

注1:修改私有方法为static时不报错

注意 2: 我看到过类似的问题报告,但所有问题都已关闭并且与 class 有关,而不是 interface


更新

最近在 Github (#1988) 上报告了类似的问题,但尚未解决。

Spotbugs 4.5.3 将此报告为“低优先级”错误。

恕我直言,您基本上有两个选择:

带注释的解决方案可能更容易实现,但会使您的源代码混乱。

使用过滤器文件的解决方案可能更难实现(如果您还没有使用过滤器文件)并且实际代码和过滤器之间的联系可能会丢失,但您的源代码没有被注释弄乱只是为了让嘈杂的工具静音。