接口中未调用的私有方法
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 将此报告为“低优先级”错误。
恕我直言,您基本上有两个选择:
- 将其作为问题报告给 Spotbugs 项目 (https://github.com/spotbugs/spotbugs/issues)
- 告诉 Spotbugs 忽略这个问题:
- 要么用
@SuppressFBWarnings("UPM")
注释方法
- 或使用过滤器文件 (https://spotbugs.readthedocs.io/en/stable/filter.html)
带注释的解决方案可能更容易实现,但会使您的源代码混乱。
使用过滤器文件的解决方案可能更难实现(如果您还没有使用过滤器文件)并且实际代码和过滤器之间的联系可能会丢失,但您的源代码没有被注释弄乱只是为了让嘈杂的工具静音。
我有一个带有 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 将此报告为“低优先级”错误。
恕我直言,您基本上有两个选择:
- 将其作为问题报告给 Spotbugs 项目 (https://github.com/spotbugs/spotbugs/issues)
- 告诉 Spotbugs 忽略这个问题:
- 要么用
@SuppressFBWarnings("UPM")
注释方法
- 或使用过滤器文件 (https://spotbugs.readthedocs.io/en/stable/filter.html)
- 要么用
带注释的解决方案可能更容易实现,但会使您的源代码混乱。
使用过滤器文件的解决方案可能更难实现(如果您还没有使用过滤器文件)并且实际代码和过滤器之间的联系可能会丢失,但您的源代码没有被注释弄乱只是为了让嘈杂的工具静音。