java @Retention元注解

@Retention元注解

有三种取值:RetentionPolicy.SOURCE、RetentionPolicy.CLASS、RetentionPolicy.RUNTIME分别对应:Java源文件(.java文件)---->.class文件---->内存中的字节码

Retention注解说明

当在Java源程序上加了一个注解,这个Java源程序要由javac去编译,javac把java源文件编译成.class文件,在编译成class时可能会把Java源程序上的一些注解给去掉,java编译器(javac)在处理java源程序时,可能会认为这个注解没有用了,于是就把这个注解去掉了,那么此时在编译好的class中就找不到注解了, 这是编译器编译java源程序时对注解进行处理的第一种可能情况,假设java编译器在把java源程序编译成class时,没有把java源程序中的注解去掉,那么此时在编译好的class中就可以找到注解,当程序使用编译好的class文件时,需要用类加载器把class文件加载到内存中,class文件中的东西不是字节码,class文件里面的东西由类加载器加载到内存中去,类加载器在加载class文件时,会对class文件里面的东西进行处理,如安全检查,处理完以后得到的最终在内存中的二进制的东西才是字节码,类加载器在把class文件加载到内存中时也有转换,转换时是否把class文件中的注解保留下来,这也有说法,所以说一个注解的生命周期有三个阶段:java源文件是一个阶段,class文件是一个阶段,内存中的字节码是一个阶段,javac把java源文件编译成.class文件时,有可能去掉里面的注解,类加载器把.class文件加载到内存时也有可能去掉里面的注解,因此在自定义注解时就可以使用Retention注解指明自定义注解的生命周期,自定义注解的生命周期是在RetentionPolicy.SOURCE阶段(java源文件阶段),还是在RetentionPolicy.CLASS阶段(class文件阶段),或者是在RetentionPolicy.RUNTIME阶段(内存中的字节码运行时阶段),根据JDK提供的API可以知道默认是在RetentionPolicy.CLASS阶段 (JDK的API写到:the retention policy defaults to RetentionPolicy.CLASS.)

原文地址:https://www.cnblogs.com/baxianhua/p/9365877.html

时间: 2024-11-06 19:15:25

java @Retention元注解的相关文章

深入浅出Java Annotation(元注解和自定义注解)

一.基本概述 Annontation是Java5开始引入的新特征.中文名称一般叫注解.它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类.方法.成员变量等)进行关联. 更通俗的意思是为程序的元素(类.方法.成员变量)加上更直观更明了的说明,这些说明信息是与程序的业务逻辑无关,并且是供指定的工具或框架使用的. Annontation像一种修饰符一样,应用于包.类型.构造方法.方法.成员变量.参数及本地变量的声明语句中. 二.原理 Annotation其实是

java元注解详解

java中元注解有四个: @Retention @Target @Document @Inherited:  @Retention:注解的保留位置 @Retention(RetentionPolicy.SOURCE)   //注解仅存在于源码中,在class字节码文件中不包含 @Retention(RetentionPolicy.CLASS)     // 默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得, @Retention(RetentionPolicy.RUNTIME

自定义注解需要注意的几个元注解

java中元注解有四个: @Retention @Target @Document @Inherited: @Retention:注解的保留位置 @Retention(RetentionPolicy.SOURCE) //注解仅存在于源码中,在class字节码文件中不包含 @Retention(RetentionPolicy.CLASS) // 默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得, @Retention(RetentionPolicy.RUNTIME) // 注解

java注解中的元注解

一:java注解中的元注解 四个元注解分别是:@Target,@Retention,@Documented,@Inherited , 再次强调下元注解是java API提供,是专门用来定义注解的注解,其作用分别如下: @Target 表示该注解用于什么地方,可能的值在枚举类 ElemenetType 中,包括: ElemenetType.CONSTRUCTOR----------------------------构造器声明 ElemenetType.FIELD ----------------

Java元注解

元注解的作用是负责注解其他注解.Java定义了4中标准的元注解类型,他们被用来提供对其他注解的说明. @target @Retention @Documented @Inherited 这些类型可以和他们所支持的类在Java.lang.annotation包中找到 每个元注解的作用: @target 修饰了annotation所修饰的对象范围,annotation可被用于package,type(类,接口,枚举,annotation),和类型成员(方法,构造方法,成员变量,枚举值).方法参数和本

java 元注解

java元注解的作用是注解其他注解,java5.0定义了四个标准的元注解:@Target.@Retention.@Inherit.@Documented. 1)@Target:用于描述注解可以修饰的类型.其可选值为:(ElementType.TYPE) ANNOTATION_TYPE(注解类型声明) PACKAGE(包) TYPE(类.接口.枚举) METHOD(方法声明) FIELD(成员变量) LOCAL_VARIABLE(本地变量) CONSTRUCTOR(构造方法) 其代码如下: @Do

Java千百问_03基础语法(022)_元注解是什么

点击进入_更多_Java千百问 1.元注解是什么 了解注释看这里:注释是什么 了解自定义注解看这里:如何自定义注解 元注解就是负责注解其他注解.Java 5定义了4个标准的元注解(meta-annotation):@Target.@Retention.@Documented.@Inherited,这些元注解的类在java.lang.annotation包中,具体如下: @Target @Target说明了注解所修饰的对象范围,即所定义的注解可以用在什么地方.具体的取值有: CONSTRUCTOR

Java中的元注解

注解为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便地使用这些数据. 通过使用注解,我们可以将这些元数据保存在Java源代码中,并利用annotation API为自己的注解构造处理工具.注解必须佩戴自己相应的处理器,不然注解没有任何意思! 基本形式 在Java中定义一个注解的基本方式为: 1 import java.lang.annotation.RetentionPolicy; 2 import java.lang.annotation.Target; 3 4

java retention注解

Retention注解 Retention(保留)注解说明,这种类型的注解会被保留到那个阶段. 有三个值:1.RetentionPolicy.SOURCE —— 这种类型的Annotations只在源代码级别保留,编译时就会被忽略2.RetentionPolicy.CLASS —— 这种类型的Annotations编译时被保留,在class文件中存在,但JVM将会忽略3.RetentionPolicy.RUNTIME —— 这种类型的Annotations将被JVM保留,所以他们能在运行时被JV