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

McG*_*one 31 java checkstyle

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

public final String getAdmitCodeStatus() {
    return admitCodeStatus;
}
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

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

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

Sne*_*kse 31

它看起来是由DesignForExtension规则引起的.根据文件:

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

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

abstract or
final or
have an empty implementation
Run Code Online (Sandbox Code Playgroud)

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

资料来源:http://sonar.15.n6.nabble.com/design-for-extension-rule-tp3200037p3200043.html

但由于你的方法有一个final修饰符,我会说你发现了一个错误,可能想记录错误报告. https://github.com/checkstyle/checkstyle/issues

  • -1这是如何回答这个问题的? (5认同)