我有两个类Foo和Bar,其中Bar扩展了Foo。
在超类中,有一个方法f()。子类重写此方法并故意抛出异常,以便永远不会在Bar的实例上调用f()。
class Foo {
public void f() {
// does something useful
}
}
class Bar extends Foo {
@Override
public void f() {
throw new UnsupportedOperationException("Srsly, thou shalt not");
}
}
现在这里是我的问题:是否有一些注释可以用于重写的方法,该方法与Eclipse之类的IDE进行通信,而不应该调用它?我发现自己想要轻易滥用@deprecated标签,以便当用户处理Bar实例时,Eclipse 中的自动完成列表会超出方法,但我想知道是否存在是一个更好的选择。
class Bar extends Foo {
/**
* @deprecated
*/
@Override
public void f() {
throw new UnsupportedOperationException("Srsly, thou shalt not");
}
}
答案 0 :(得分:-2)
不是没有,因为Java中的所有(非静态)方法都是虚拟的,并且调用是在运行时解析的。换句话说,编译器无法检测到Bar的版本将在运行时调用。
答案 1 :(得分:-2)
我会将函数f()设为私有。 这样,它永远不会被称为Bar。