欢迎来IT培训班!

咨询热线 18940085928

IT培训网 > 知识学习 > JAVA开发 >

Java @Deprecated注解

授课机构:IT培训班

地址:北京

网报价格:详询

课程原价:

咨询热线:18940085928

课程详情 相关推荐 学校地址 网上报名

Java 中 @Deprecated 可以用来注解类、接口、成员方法和成员变量等,用于表示某个元素(类、方法等)已过时。当其他程序使用已过时的元素时,编译器将会给出警告。

使用 @Deprecated 注解示例代码如下:

		
  1. @Deprecated
  2. public class Person {
  3. @Deprecated
  4. protected String name;
  5. private int age;
  6.  
  7. public String getName() {
  8. return name;
  9. }
  10.  
  11. public void setName(String name) {
  12. this.name = name;
  13. }
  14.  
  15. public int getAge() {
  16. return age;
  17. }
  18.  
  19. public void setAge(int age) {
  20. this.age = age;
  21. }
  22.  
  23. @Deprecated
  24. public void setNameAndAge(String name, int age) {
  25. this.name = name;
  26. this.age = age;
  27. }
  28.  
  29. @Override
  30. public String toString() {
  31. return "Person [name=" + name + ", age=" + age + "]";
  32. }
  33. }
上述代码第 2 行类 Person、第 4 行的成员变量 name 和第 24 行的 setNameAndAge 方法都被 @Deprecated 注解。在 Eclipse 中这些被注解的 API 都会被画上删除线。调用这些 API 代码也会有删除线,示例代码如下。 

		
  1. public class HelloWorld {
  2. public static void main(String[] args) {
  3. Person p = new Person();
  4. p.setNameAndAge("C语言中文网", 20);
  5. p.name = "Java教程";
  6. }
  7. }
在 Eclipse 中代码显示如下图所示。
从图中可以看到代码中不仅有删除线,而且还有编译警告。 Java 9 为 @Deprecated 注解增加了以下两个属性:
  1. forRemoval:该 boolean 类型的属性指定该 API 在将来是否会被删除。
  2. since:该 String 类型的属性指定该 API 从哪个版本被标记为过时。
示例代码如下所示:

		
  1. class Test {
  2. // since属性指定从哪个版本开始被标记成过时,forRemoval指定该API将来会被删除
  3. @Deprecated(since = "9", forRemoval = true)
  4. public void print() {
  5. System.out.println("这里是C语言中文网Java教程!");
  6. }
  7. }
  8.  
  9. public class DeprecatedTest {
  10. public static void main(String[] args) {
  11. // 下面使用info()方法时将会被编译器警告
  12. new Test().print();
  13. }
  14. }
上面程序的第 12 行代码使用了 Test 的 print() 方法,而 Test 类中定义 info() 方法时使用了 @Deprecated 修饰,表明该方法已过时,所以将会引起编译器警告。 @Deprecated 的作用与文档注释中的 @deprecated 标记的作用基本相同,但它们的用法不同,前者是 Java 5 才支持的注解,无须放在文档注释语法(/** ... */部分)中,而是直接用于修饰程序中的程序单元,如方法、类和接口等。
  • 学校名称:IT培训网

    固定电话:18940085928

    授课地址:线下 预约名额

报名信息