Java元注解

原创 2015年11月20日 20:02:19

1.何为元注解?

元注解(meta-annotation)就是注解的注解。

2.有哪些元注解?

Java有四个元注解 @Retention @Target @Document @Inherited;

@Retention

表示注解被保留的程度:源码,CLASS文件,运行时。

需要配合注释修饰符RetentionPolicy使用。

源码:

package java.lang.annotation;

/**
 * @since 1.5
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Retention {
    RetentionPolicy value();
}

@Target 

注解的合法作用对象,需要结合修饰符ElementType来使用。

例如Element.METHOD修饰的注解,就只能用在方法上,如果用在了类上,就会报错。

所以我们看到四个元注解的Target都是@Target(ElementType.ANNOTATION_TYPE),表示作用在注解上。

源码:

package java.lang.annotation;

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Target {
    ElementType[] value();
}


@Document

表示被注解的内容会出现在javadoc中,即javadoc中会包含该注解。

源码:

package java.lang.annotation;

/**
  * @author  Joshua Bloch
 * @since 1.5
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Documented {
}


@Inherited

表示子类可以继承父类中的该注解(该注解是注解于父类)

源码:

package java.lang.annotation;

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Inherited {
}

3.注解修饰符


在上面的四个元注解中,存在两个注解修饰元素。RetentionPolicy和ElementType

RetentionPolicy:指的是注解的保留程度。

@Retention(RetentionPolicy.SOURCE) //注解仅存在于源码中,在class字节码文件中不包含
@Retention(RetentionPolicy.CLASS)   //默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得
@Retention(RetentionPolicy.RUNTIME)// 注解会在class字节码文件中存在,在运行时可以通过反射获取到

ElementType:指的是注解的作用目标。

@Target(ElementType.TYPE)   //接口、类、枚举、注解
@Target(ElementType.FIELD)  //字段、枚举的常量
@Target(ElementType.METHOD)  //方法
@Target(ElementType.PARAMETER)  //方法参数
@Target(ElementType.CONSTRUCTOR)   //构造函数
@Target(ElementType.LOCAL_VARIABLE) //局部变量
@Target(ElementType.ANNOTATION_TYPE) //注解
@Target(ElementType.PACKAGE)  //




版权声明:原创文章,转载请注明出处。

相关文章推荐

java利用@interface定义元注解及使用实例

项目中遇到一个日志记录功能,记录登录系统用户的行为日志(对订单进行验单,发货,退款等操作)。使用了拦截器及注解的形式,来完成日志记录。 参考网络资源,写一个简单的demo,对java元注解知识进行一...

java四种元注解

在jdk1.5引进了注解的,有许多框架都使用了注解,例如spring,hibernate.现将其简单介绍一下 元注解:注解的注解,即java为注解开发特准备的注解。 在java中有四种元注解1.@...

java元注解及源码浅析

java元注解及源码浅析@(Java)首先,先看java.lang.annotation下的代码层次结构。如图所示: 其中比较主要的为一个接口,四个annotation类型和两个枚举类Interfa...

java学习笔记 元注解

元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解:     1.@...

java泛型反射注解

  • 2016年08月18日 16:34
  • 6KB
  • 下载

java的注解

  • 2014年12月17日 22:17
  • 1.83MB
  • 下载

java 注解的几大作用及使用方法详解

http://www.tmser.com/?post=34&page=1
  • lxqluo
  • lxqluo
  • 2014年06月13日 16:53
  • 16554

Java 注解(Annotation)

  • 2012年05月25日 14:53
  • 1.41MB
  • 下载

Java获取类、方法、属性上的注解

获取某个类的注解有3个方法Class.getAnnotations()、Class.getAnnotation(Class< A > annotationClass)、Class.getDeclare...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java元注解
举报原因:
原因补充:

(最多只允许输入30个字)