博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java注解
阅读量:4984 次
发布时间:2019-06-12

本文共 2487 字,大约阅读时间需要 8 分钟。

package annotation;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@Target({ElementType.METHOD,ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)/** *   元注解: 元注解是可以注解到注解上的注解,或者说元注解是一种基本注解,但是它能够应用到其它的注解上面。   @Retention、@Documented、@Target、@Inherited、@Repeatable       1.@Retention     RetentionPolicy.RUNTIME 注解会在class字节码文件中存在,在运行时可以通过反射获取到     RetentionPolicy.CLASS 默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得     RetentionPolicy.SOURCE 注解仅存在于源码中,在class字节码文件中不包含   2.@Documented               顾名思义,这个元注解肯定是和文档有关。它的作用是能够将注解中的元素包含到 Javadoc 中去。   3.@Target               是目标的意思,@Target 指定了注解运用的地方。              @Target({ElementType.METHOD,ElementType.TYPE})    ElementType.ANNOTATION_TYPE 可以给一个注解进行注解    ElementType.CONSTRUCTOR 可以给构造方法进行注解    ElementType.FIELD 可以给属性进行注解    ElementType.LOCAL_VARIABLE 可以给局部变量进行注解    ElementType.METHOD 可以给方法进行注解    ElementType.PACKAGE 可以给一个包进行注解    ElementType.PARAMETER 可以给一个方法内的参数进行注解    ElementType.TYPE 可以给一个类型进行注解,比如类、接口、枚举   4.@Inherited            是继承的意思,但是它并不是说注解本身可以继承,而是说如果一个超类被 @Inherited 注解过的注解进行注解的话,那么如果它的子类没有被任何注解应用的话,那么这个子类就继承了超类的注解。           说的比较抽象     @Inherited    @Retention(RetentionPolicy.RUNTIME)    @interface Test {}    @Test    public class A {}    public class B extends A {}    注解 Test 被 @Inherited 修饰,之后类 A 被 Test 注解,类 B 继承 A,类 B 也拥有 Test 这个注解。    5.@Repeatable    Repeatable 自然是可重复的意思。@Repeatable 是 Java 1.8 才加进来的,所以算是一个新的特性。     @Person(role="artist")    @Person(role="coder")    @Person(role="PM")    public class SuperMan{}            没有属性时  括号可省略    @Auth *  * */public @interface Auth {        /**     * 注解只有成员变量,没有方法。注解的成员变量在注解的定义中以“无形参的方法”形式来声明     * 在注解中定义属性时它的类型必须是 8 种基本数据类型外加 类、接口、注解及它们的数组。      * @return     */    String value() default "";        String [] name();        String group() default "group1";        }/** *  * 注解的获取 *  * 1类注解 * TestAnnotation testAnnotation = Test.class.getAnnotation(TestAnnotation.class); * 2成员变量注解获取 * Field a = Test.class.getDeclaredField("a");   a.setAccessible(true);   //获取一个成员变量上的注解   Check check = a.getAnnotation(Check.class);      3.方法上的注解获取   Method testMethod = Test.class.getDeclaredMethod("testMethod");   Annotation[] ans = testMethod.getAnnotations();    for( int i = 0;i < ans.length;i++) {        System.out.println("method testMethod annotation:"+ans[i].annotationType().getSimpleName());    }    *  *  *  */

 

转载于:https://www.cnblogs.com/jentary/p/11103522.html

你可能感兴趣的文章
在vim中搜索单词
查看>>
设置定点数学属性
查看>>
自动化测试工具 Test Studio入门教程
查看>>
排序算法(一) —— 冒泡排序
查看>>
No.026:Remove Duplicates from Sorted Array
查看>>
SpringBoot项目的几种创建方式,启动、和访问
查看>>
解决"disabled". Expected Boolean, got Number with value 0
查看>>
OC--init,initialize,initWithCoder:,initWithFrame:各方法的区别和加载顺序
查看>>
Exponentiation
查看>>
本地jar上传到本地仓库
查看>>
四则运算C++带Qt界面版本,吾王镇楼。。。。。
查看>>
各种获取时间的方法包含各类时间格式
查看>>
安卓7.0手机拍照闪退问题解决
查看>>
黑马程序员------IO(一)
查看>>
springcloud的配置
查看>>
ME525+ Defy+ 刷机指南[zz]
查看>>
支持触屏的jQuery轮播图插件
查看>>
差一点搞混了Transactional注解
查看>>
javascript基本函数
查看>>
C#转义字符
查看>>