Jon*_*eet 34
假设你有:
public class Foo
{
public void bar(String x, String y) {}
}
public class Foo2 extends Foo
{
public void bar(String x, Object y) {}
}
Run Code Online (Sandbox Code Playgroud)
你真的意味着Foo2.bar覆盖Foo.bar,但由于在签名中的错误,它没有.如果使用@Override,可以让编译器检测到故障.这也说明任何阅读,这是压倒一切的现有方法或实现接口的代码-他们对当前的行为和重命名方法可能产生的影响提出建议.
此外,如果方法在没有指定的情况下覆盖方法,您的编译器可能会发出警告@Override,这意味着您可以检测是否有人在没有您知道的情况下向超类添加了具有相同签名的方法 - 您可能不希望重写新方法,因为您现有的方法可能有不同的语义.虽然@Override没有提供"取消超越"方法的方法,但它至少突出了潜在的问题.
| 归档时间: |
|
| 查看次数: |
12684 次 |
| 最近记录: |