8

有人知道带@Deprecated注释的类是否意味着所有方法和字段都会自动被弃用..?

JLS 9.6.3.6。@已弃用

至少 eclipse 没有显示DeprecatedDeprecated 类的方法。

4

3 回答 3

6

不,如果你这样做

@Deprecated
class Old {
     public void foo () {}
}

您何时引用该类:

新的老的().foo()

只要

老的

将被标记为已弃用。

于 2013-07-12T12:37:29.893 回答
4

如果说我已经VO用以下方式注释了课程@Deprecated

@Deprecated
class VO {
  private String name ;
  public void setName(String name) {
    this.name = name;
  }
  public String getName() {
    return name;
  }
}

然后 :

VOv = 新 VO(); // 此处警告

v.getName(); // no warning

这意味着该类已被弃用。因此,使用该类型将显示警告。

于 2013-07-12T12:39:28.143 回答
2

好吧,规范是这样说的:

当一个类型 [..] 的声明被注释 @Deprecated 被使用(即被名称覆盖、调用或引用)时,Java 编译器必须产生一个弃用警告,[..]

所以严格来说,在不推荐使用类型的对象上调用方法不需要产生警告(因为“覆盖”和“调用”只能引用方法或构造函数,并且类不被名称引用)。但是,声明该对象必须提供警告。

但是,没有什么说不允许编译器提供更多警告。在我看来,可以合理地假设已弃用类的所有方法都应被视为已弃用。

于 2013-07-12T12:37:31.397 回答