A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 晓天s 中级黑马   /  2013-10-28 11:03  /  1123 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

注解的分类
注解按照使用的方式和用途,注解可以分成以下三种:
1、内建注解
内建注解也成为基本注解,位于java.lang包下,共有三个:
1)限定重写父类方法: @Override  表示下面的方法是在覆盖(父类方法),如果不存在覆盖,就会报错。
加上此注解,可对类中的方法判断是否是要覆盖的父类的方法。典型的例子即在类中覆盖equals(Object obj)方法时,其中的参数类型必须是Object,才能被覆盖;若不是,则不存在覆盖。此时如果加上了此注解就会提示警告。
2)标示方法已经过时: @Deprecated  告知调用者,该成员函数、字段等已经过时,不再推荐使用。
       源代码标记@Deprecated是在JDK1.5中作为内置的annotation引入的,用于表明类(class)、方法(method)、字段(field)已经不再推荐使用,并且在以后的JDK版本中可能将其删除,编译器在默认情况下检测到有此标记的时候会提示警告信息。
例如:假定之前的某个类升级了,其中的某个方法已经过时了,不能够将过时的方法删除,因为可能会影响到之前调用此这个方法的某些程序,这时就可以通过在方法上加这个注解来标记。
3)抑制编译器警告:@SuppressWarnings(”deprecation”)  压制过时警告;或者说不要警告过时提示了
SupressWarning是告知编译器或开发工具等不需要再提示指定的警告了; “deprecation”是警告的信息,即过时警告。
2、元注解     即在定义注解类的时候加注解,用于修饰其他注解,位于java.lang.annotation子包下,共有四个:
1)@Retention
用于修饰一个Annotation定义,用于指定被修饰注解的生命周期(注解保留在哪个阶段),@Retention中包含一个RetentionPolicy类型的value成员变量,在使用@Rentention时必须为该value成员变量指定值。RetentionPolicy是一个枚举类,Value成员变量的值只能是如下三个:
(1)RetetionPolicy.SOURSE:java源文件时期,如@Overried和@SuppressWarning
(2)RetetionPolicy.CLASS: class文件时期(默认阶段)
(3)RetetionPolicy.RUNTIME:运行时期,如@Deprecated
  如:在某注解类上加@Retention(RetentionPolicy.RUNTIME),表示此注解会一直存在。
【注意】
(1)@Retention的value的默认取值就是RetentionPolicy.CLASS
(2)当在源程序上加了注解,javac将java源程序编译为class文件时,会对注解的生命周期进行判断。如果该注解只保留在源程序,则编译时会将
         该注解进行相应的处理操作,如去掉。其他类推。
(3)class文件中不是字节码,只有把class文件中的内容加载进内存,用类加载器加载处理后(进行完整的检查等处理),最终得到的二进制内
        容才是字节码。
2)@Target   
用于指定被修饰的注解的适用范围,即被修饰的注解可以用来修饰哪些程序元素。@Target中包含value成员变量,其值可设置为枚举类ElementType类中的任何一个,包括:包、字段、方法、方法参数、构造器、类等值。取值为:
(1)TYPE:类类型、接口类型 (注解类型)、枚举类型声明
(2)FIELD:成员属性声明 (包括枚举常量成员)
(3)METHOD:成员方法声明
(4)PARAMETER:参数声明
(5)CONSTRUCTOR:构造方法声明
(6)LOCAL_VARIABLE:局部变量声明
(7)ANNOTATION_TYPE:注解类型声明
(8) PACKAEG:包声明
【注意】这种类型和TYPE的区别
TYPE:可以表示多种数据类型,这些被TYPE表示的数据类型的中包含了ANNOTATION_TYPE这种类型。
ANNOTATION_TYPE仅仅就表示注解类型一种。
3)@Documented
用于指定被修饰的注解将被javadoc工具提取成文档。
如果定义注解的时候使用了@Documented进行了修饰,则使用了@Documented注解修饰的注解所修饰的其他程序元素的API文档都会包含该注解的说
明。
4)@Inherited
用于指定被@Inherited修饰的注解具有继承性,如果某个类使用了@Inherited修饰的注解,那么这个类的子类将自动继承这个被@Inherited修饰的注解。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马