1

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

现在这是我的问题:是否有一些注释可以用于与 IDE(例如 Eclipse)通信的被覆盖方法上,而不应该调用它?我发现自己想轻轻地滥用@deprecated 标记,以便在用户处理 Bar 实例时,Eclipse 中的自动完成列表跨越该方法,但我想知道是否有更好的选择。

class Bar extends Foo {

  /**
   * @deprecated
   */
  @Override
  public void f() {
      throw new UnsupportedOperationException("Srsly, thou shalt not");
  }
}
4

2 回答 2

-2

我会将函数 f() 设为私有。这样,它就永远不能在 Bar 之外调用。

于 2013-02-23T11:57:06.843 回答
-2

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

于 2013-02-23T02:31:20.027 回答