Possible Duplicate:
When do you use Java’s @Override annotation and why?在Java中@Override是什么?
除了让编译器检查超类具有该方法之外,是否有任何其他理由用@Override注释方法?
Possible Duplicate:
When do you use Java’s @Override annotation and why?在Java中@Override是什么?
除了让编译器检查超类具有该方法之外,是否有任何其他理由用@Override注释方法?
你描述,@Override创建一个编译时检查一个方法是否被覆盖。这对确保您在尝试覆盖时没有愚蠢的签名问题非常有用。
例如,我已经看到了以下错误:
public class Foo {
private String id;
public boolean equals(Foo f) { return id.equals(f.id);}
}
该类编译如下写的,但添加@Override标签equals方法会导致编译错误,因为它没有覆盖equals方法对象。这是一个简单的错误,但它可以逃脱即使是经验丰富的开发人员的眼睛
它不仅使编译器检查 - 虽然这将足以使其有用;它也记录了开发者的意图。例如,如果你重写了一个方法,但是没有从类型本身的任何地方使用它,稍后有人来到代码中可能会奇怪为什么它在那里。注释解释了它的目的。
也广泛回答我不知道当你回答这个问题时,你的声望点是什么。 – 2016-07-23 01:27:52
@OmarTariq:粗略猜测,我怀疑大约有50K。 – 2016-07-23 01:36:28
没了 - 但它也提高了可读性(即除任何指示你的IDE使用,它可以很容易地发现,一个方法覆盖的声明在超)
不,你几乎钉上了它。
@Override
告诉编译器你意图:如果标签的方法@Override
,你打算覆盖从超类的东西(或接口,Java 6中)。一个好的IDE将有助于标记任何覆盖方法而没有@Override
的方法,所以这两者的结合将有助于确保你正在做你想做的事情。
也在http://stackoverflow.com/q/94361/697630 – 2012-05-01 23:28:50