Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用@Deprecated注释初始化意味着所有方法和字段将自动被弃用_Java_Eclipse_Deprecated - Fatal编程技术网

Java 使用@Deprecated注释初始化意味着所有方法和字段将自动被弃用

Java 使用@Deprecated注释初始化意味着所有方法和字段将自动被弃用,java,eclipse,deprecated,Java,Eclipse,Deprecated,有人知道注释为@Deprecated的类是否意味着所有方法和字段都将自动被弃用 从 对于不推荐使用的类,eclipse至少没有将方法显示为不推荐使用的。否。如果您这样做的话 @Deprecated class Old { public void foo () {} } 将引用该类的时间: 新的旧的().foo() 只有 旧的 将被标记为已弃用。嗯,规范中说: 当使用类型[…]时,Java编译器必须生成弃用警告,该类型的声明用注释@Deprecated注释(即,被名称重写、调用或引用)

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

对于不推荐使用的类,eclipse至少没有将方法显示为不推荐使用的。

否。如果您这样做的话

@Deprecated
class Old {
     public void foo () {}
}
将引用该类的时间:

新的旧的().foo()

只有

旧的


将被标记为已弃用。

嗯,规范中说:

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

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


但是,没有任何东西表明编译器不允许提供更多警告。在我看来,假设一个不推荐使用的类的所有方法都应该被视为不推荐使用是合理的。

如果说我已经用
@deprecated
注释了这个类
VO

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

VO v=新VO();//警告这里


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

No它只意味着该类型已弃用,所有方法都未弃用。最后一部分:这正是Eclipse所做的。为了在编辑器中显示警告和错误,Eclipse使用它自己的编译器,该编译器会对不推荐类的非不推荐成员生成不推荐的警告。@Joachim Sauer,这意味着,如果类被标记为不推荐,则某些编译也会对函数生成警告。在我看来,这也应该是一个警告。
v.getName(); // no warning