如您所述,@ Override创建了一个编译时检查,表明正在覆盖某个方法.这对于确保在尝试覆盖时没有愚蠢的签名问题非常有用.
例如,我看到以下错误:
public class Foo { private String id; public boolean equals(Foo f) { return id.equals(f.id);} }
此类编译为已编写,但将@Override标记添加到equals方法将导致编译错误,因为它不会覆盖Object上的equals方法.这是一个简单的错误,但它甚至可以逃避经验丰富的开发人员的眼球
如您所述,@ Override创建了一个编译时检查,表明正在覆盖某个方法.这对于确保在尝试覆盖时没有愚蠢的签名问题非常有用.
例如,我看到以下错误:
public class Foo { private String id; public boolean equals(Foo f) { return id.equals(f.id);} }
此类编译为已编写,但将@Override标记添加到equals方法将导致编译错误,因为它不会覆盖Object上的equals方法.这是一个简单的错误,但它甚至可以逃避经验丰富的开发人员的眼球
它不仅使编译器检查 - 尽管这足以使其有用; 它还记录了开发人员的意图.
例如,如果你覆盖一个方法但不在类型本身的任何地方使用它,那么稍后有人会在这里找到它的原因.注释解释了其目的.
不,你几乎钉了它.
@Override
告诉编译器你的意图:如果你标记一个方法@Override
,你打算覆盖超类(或接口,在Java 6中)的东西.一个好的IDE将有助于标记任何覆盖方法的方法@Override
,因此两者的结合将有助于确保您正在做您正在尝试的方法.