代码之家  ›  专栏  ›  技术社区  ›  Eyvind

Java:我应该在实现抽象方法时添加@Override注释吗?

  •  46
  • Eyvind  · 技术社区  · 16 年前

    在Java中重写非虚拟方法时,使用 @Override @凌驾

    4 回复  |  直到 6 年前
        1
  •  79
  •   Andrzej Doyle    16 年前

    我倾向于使用 @Override 在这种情况下,如果超类发生更改(或者完全删除该方法,或者更改其签名,等等),则在子类中标记该方法。

    唯一真正的区别是,如果没有注释,如果超类/接口中的方法被更改或删除,那么所讨论的实现只会成为该类的“正常”方法。因此,如果您只是为了履行合同而实现方法,那么您应该添加注释;如果该方法在您的类中有意义,那么您可能不应该添加它,而不管任何实现的接口或继承的抽象方法如何。

        2
  •  23
  •   Jon Skeet    16 年前

    是的,它再次告诉编译器,“我真的想在这里重写一个方法 要重写的相应方法,我犯了一个错误,希望别人告诉我!"

    我个人认为这只是一个注释,而不是语言的一部分(就像C#一样),这是一个遗憾,但这当然是事后诸葛亮的好处。

        3
  •  16
  •   mR_fr0g    13 年前

    对Joshua Bloch推荐使用有效的Java进行练习。

        4
  •  6
  •   Mark    15 年前

    事实上,Joshua Bloch在第178页的最后一段 ,表示重写抽象方法的具体类的方法使用 Override 注释,因为编译器无论如何都会给出错误。然而,“这样做是无害的”。

    我建议你选择一个策略并坚持下去。