不调用重写方法的java注释

不调用重写方法的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

我有两个类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");
  }
}

不是,因为Java中的所有非静态方法都是虚拟的,并且调用在运行时被解析。换句话说,编译器无法检测在运行时调用Bar版本的方法。

我将使函数f私有。
这样,它就永远不能在酒吧外调用。

UnsupportedOperationException似乎是最接近的方法,但我认为没有注释。您希望调用的预期方法是什么?如果是,请使用Super关键字调用Super类方法。@Boann我想可能是这样的。你应该把你的评论粘贴到回答中,以防没有人理解这个问题。我知道你的回答没有不真实的陈述。它们在某种程度上与这个问题有关吗?