2009-06-17 95 views

回答

53

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

唯一的区别是,没有注释,如果在超类/接口的方法改变或除去,所讨论的实现简单地成为该类别的一个“正常”的方法。因此,如果您只是为了履行合同而实施该方法,您应该添加注释;如果该方法在您的类中有意义,则不应该添加它,而不考虑任何已实现的接口或继承的抽象方法。

+4

您还需要Java 6来利用此注释。 Java 5不允许你将它放在接口实现上。 – akarnokd 2009-06-17 09:03:21

13

是。这是Joshua Bloch在Effective Java中推荐的练习。

19

是的 - 它再次告诉编译器,“我真的想在这里重写一个方法。如果有不是是一个覆盖的相应方法,我犯了一个错误,想要告诉它!”

我个人认为这是一个遗憾,这只是一个注释,而不是语言的一部分(因为它是在C#),但是那是当然的后见之明。

+0

+1为“回归测试” – guerda 2009-06-17 08:58:23

+1

保存了我的皮肤几次。 – 2009-06-17 15:37:16

6

事实上,约书亚·布洛克,在178页的有效的Java最后一段(第2版)说,它不是必需的具体类重写抽象方法使用Override注释的方法,因为编译器会无论如何给错误。但是,“这样做并没有害处”。

我建议选择一个策略,始终坚持它。

相关问题