具有@Deprecated注释的类意味着将自动弃用所有方法和字段

时间:2013-07-12 12:32:57

标签: java eclipse deprecated

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

来自JLS 9.6.3.6. @Deprecated

对于不推荐使用的类,eclipse并没有将方法显示为Deprecated

3 个答案:

答案 0 :(得分:4)

没有。如果你这样做

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

您何时会引用该课程:

  

new Old ()。foo()

  

将被标记为已弃用。

答案 1 :(得分:3)

如果说我已使用VO注释了课程@Deprecated

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

然后:

  

VO v = new VO(); //警告

v.getName(); // no warning

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

答案 2 :(得分:1)

嗯,规范说明了这一点:

  

当使用注释@Deprecated注释声明的类型[..]时,Java编译器必须产生弃用警告(即,重写,调用或通过名称引用),[..]

所以严格来说调用不允许使用该类型的对象的方法不需要产生警告(因为“重写”和“调用”只能引用方法或构造函数和类没有引用名称)。 声明该对象,但必须提供警告。

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