该检查在批处理模式(与代码 | 检查代码或代码 | 分析代码 | 按名称运行检查)和在编辑器中动态运行时的工作方式不同:
return
语句、没有 super 方法,以及无法被重写的方法。 如果一个方法重写或实现了一个方法,约定可能会要求它返回一个特定的常量,但同时,我们可能希望有多个出口点。 如果一个方法可以被重写,则可能在子类中返回不同的值。
示例:
class X {
// 仅在批处理模式下发出警告:
int xxx() { // 方法 'xxx()' 及其所有重写方法始终返回 '0'
return 0;
}
}
class Y extends X {
@Override
int xxx() {
return 0;
}
// 仅在批处理模式下发出警告:
int yyy() { // 方法 'yyy()' 始终返回 '0'
return 0;
}
// 在批处理模式下和动态运行时均发出警告:
final int zzz(boolean flag) { // 方法 'zzz()' 始终返回 '0'
if (Math.random() > 0.5) {
return 0;
}
return 0;
}
}