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

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

public final String getAdmitCodeStatus() { return admitCodeStatus; } 

这是我得到的错误:

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

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

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

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

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

 abstract or final or have an empty implementation 

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

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

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

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

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