一、什么是注释
说起注释,得先提一提什么是元数据(metadata)。所谓元数据就是数据的数据。也就是说,元数据是描述数据的。就象数据表中的字段一样,每个字段描述了这个字段下的数据的含义。而J2SE5.0中提供的注释就是java源代码的元数据,也就是说注释是描述java源代码的。在J2SE5.0中可以自定义注释。使用时在@后面跟注释的名字。
二、J2SE5.0中预定义的注释
在J2SE5.0的java.lang包中预定义了三个注释。它们是Override、Deprecated和SuppressWarnings。下面分别解释它们的含义。
Override
这个注释的作用是标识某一个方法是否覆盖了它的父类的方法。那么为什么要标识呢?让我们来看看如果不用Override标识会发生什么事情。
class ParentClass1
}
class Class1 extends ParentClass1
}
ParentClass1 c1 = new Class1();
c1.myMethod1();
如果我们使用Override来修饰Class1中的myMethod1方法,当myMethod1被误写成别的方法时,编译器就会报错。因此,就可以避免这类错误。
class Class1 extends ParentClass1编译器产生一个错误
{...}
}
class Class1 extends ParentClass1
}
Deprecated
这个注释是一个标记注释。所谓标记注释,就是在源程序中加入这个标记后,并不影响程序的编译,但有时编译器会显示一些警告信息。
那么Deprecated注释是什么意思呢?如果你经常使用eclipse等IDE编写java程序时,可能会经常在属性或方法提示中看到这个词。如果某个类成员的提示中出现了个词,就表示这个并不建议使用这个类成员。因为这个类成员在未来的JDK版本中可能被删除。之所以在现在还保留,是因为给那些已经使用了这些类成员的程序一个缓冲期。如果现在就去了,那么这些程序就无法在新的编译器中编译了。
说到这,可能你已经猜出来了。Deprecated注释一定和这些类成员有关。说得对!使用Deprecated标注一个类成员后,这个类成员在显示上就会有一些变化。在eclipse中非常明显。让我们看看图1有哪些变化。
图1 加上@Deprecated后的类成员在eclipse中的变化
从上图可以看出,有三个地方发生的变化。红色框里面的是变化的部分。
1. 方法定义处
2. 方法引用处
3. 显示的成员列表中
发生这些变化并不会影响编译,只是提醒一下程序员,这个方法以后是要被删除的,最好别用。
Deprecated注释还有一个作用。就是如果一个类从另外一个类继承,并且override被继承类的Deprecated方法,在编译时将会出现一个警告。如test.java的内容如下:
class Class1
}
class Class2 extends Class1
}