【问题标题】:What happened to Java's @OverridingMethodMustCallSuper?Java 的@OverridingMethodMustCallSuper 发生了什么?
【发布时间】:2011-12-09 15:51:15
【问题描述】:

我做梦了吗?我可以发誓我读过一些关于 java 7 提供注释的东西,你可以把它放在一个方法上,以确保所有子类都调用 super。这是否已被重命名或删除,或者从未真正考虑过?

【问题讨论】:

    标签: java annotations overriding


    【解决方案1】:

    它是JSR 305: Annotations for Software Defect Detection 的一部分,称为@OverridingMethodsMustInvokeSuper

    JSR 处于非活动状态,但参考实现是 availableFindBugs 捆绑在一起

    【讨论】:

    • 啊,真可惜,我期待着那个小家伙删除我一直在使用的这些毫无意义的委托方法。哦,谢谢你的信息。
    • @user842800 为什么在子类中需要更多方法?
    • 根据github.com/findbugsproject/findbugs/… FindBugs 对@OverridingMethodsMustInvokeSuper 的检查仍为“TESTING”,即默认不运行。
    • @PiotrFindeisen 正确,这是有道理的。 (而且由于这个问题已经有 4 年的历史了,而且 JSR 处于休眠状态,甚至不确定它是否重要。)
    • 嗯...确实如此。我希望 FindBugs 提供这样的注释(无论是 @OverridingMethodsMustInvokeSuper 还是其他类似的名称对我来说都无关紧要)它的检查器。问题很老,问题很老,但我已经第二次找到了:)
    【解决方案2】:

    Coin 项目可能会建议它,它接受了许多建议,但选择了列表中最好/最简单的。

    您可以改为这样做。

    public final void method() {
         // super code
         subClassMethod();
    }
    
    protected void subClassMethod() {
        // can be overridden.
    }
    

    【讨论】:

      猜你喜欢
      • 2013-01-27
      • 1970-01-01
      • 1970-01-01
      • 2018-07-28
      • 1970-01-01
      • 1970-01-01
      • 2018-04-02
      • 2016-02-28
      • 2014-02-28
      相关资源
      最近更新 更多