以下是我的真实模型类的简化方案,以突出显示该问题。
public class NullableModel {
public static final NullableModel NULL = new NullableModel() {
@Override
public boolean isNull() {
return true;
}
};
public static NullableModel withValues(Object... values) {
// some checks that sets 'allValid' boolean depending if value is OK
boolean allValid = ...
return allValid? new NullableModel(values) : NULL;
}
private Object[] values;
private NullableModel(Object... values) {
this.values = values;
}
public boolean isNull() {
return false;
}
...
}
如果我没有遗漏任何内容,则此代码会正确编译。如果我在启用FinalClass模块的情况下运行checkstyle,它会抱怨因为NullableModel不是final(所有构造函数都是私有的)。但是如果我创建了最终的NullableModel,它会在NULL静态最终声明中给出一个编译错误,因为没有任何东西可以从NullableModel继承,因为它是最终的。
FinalClass检查对我项目的很多其他部分都有效,这只是例外。所以,由于我无法做到最终,那么问题是,如何在不禁用FinalClass检查的情况下避免checkstyle错误?
提前致谢