不调用重写方法的java注释
我有两个类Foo和Bar,其中Bar扩展了Foo 在超类中,有一个方法f。子类重写此方法并有目的地抛出异常,以便永远不会在Bar实例上调用f不调用重写方法的java注释,java,annotations,overriding,subclass,deprecated,Java,Annotations,Overriding,Subclass,Deprecated,我有两个类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
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");
}
}
不是,因为Java中的所有非静态方法都是虚拟的,并且调用在运行时被解析。换句话说,编译器无法检测在运行时调用Bar版本的方法。我将使函数f私有。
这样,它就永远不能在酒吧外调用。UnsupportedOperationException似乎是最接近的方法,但我认为没有注释。您希望调用的预期方法是什么?如果是,请使用Super关键字调用Super类方法。@Boann我想可能是这样的。你应该把你的评论粘贴到回答中,以防没有人理解这个问题。我知道你的回答没有不真实的陈述。它们在某种程度上与这个问题有关吗?