Checkstyle“方法未设计为扩展”错误被错误地发出?

时间:2011-04-25 15:42:51

标签: java checkstyle

我正在使用Checkstyle,并且收到有关此方法的错误:

public final String getAdmitCodeStatus() {
    return admitCodeStatus;
}

这是我得到的错误:

  

方法'getAdmitCodeStatus'不是为扩展而设计的 - 需要是abstract,final或empty。

该方法如何不符合要求?有什么我做错了,Checkstyle会对我这个方法咆哮吗?

3 个答案:

答案 0 :(得分:31)

它看起来是由DesignForExtension规则引起的。根据{{​​3}}:

  

检查类是否设计用于扩展。更具体地说,它   强制执行编程风格,其中超类提供空的“挂钩”   可以由子类实现。

     

确切的规则是非私有的,非静态的类方法   可以被子类化必须是

abstract or
final or
have an empty implementation
     

基本原理:这种API设计风格可以保护超类不受影响   被子类打破。缺点是子类受到限制   他们的灵活性,特别是他们无法阻止代码的执行   在超类中,但这也意味着子类不能破坏   忘记调用超级方法的超类状态。

来源:the documentation

但是由于你的方法有一个final修饰符,我会说你发现了一个错误,可能想记录错误报告。 http://sonar.15.n6.nabble.com/design-for-extension-rule-tp3200037p3200043.html

答案 1 :(得分:1)

乍一看,它看起来像地球上的编程风格是什么...... 这只是检查你是否正在计划要继承的方法......然后你可以声明它们final,abstract or empty implementation. 然后你宣布它是最终的...;) 根据需求情景,该类可以是最终的,也可以是单独的方法。

答案 2 :(得分:0)

我认为此检查很有用,而且大多数情况下警告都是合理的。有时这是不合适的,然后我忽略它。

相关问题