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

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

public class Annote {    @Retention(RetentionPolicy.RUNTIME)    @Target({ElementType.TYPE,ElementType.METHOD,ElementType.FIELD,ElementType.CONSTRUCTOR})    public @interface RequiredRoles{        String name();        int id() default 0;    }        @RequiredRoles(name="type") //类成员注解    public class UserAnnotation {                @RequiredRoles(name="param", id=1) //类成员注解        private Integer age;                @RequiredRoles (name="construct", id=2)//构造方法注解        public UserAnnotation(){        }                @RequiredRoles(name="public method", id=3) //类方法注解        public void a(){            Map m = new HashMap(0);        }                @RequiredRoles(name="protected method", id=4) //类方法注解        protected void b(){            Map m = new HashMap(0);        }                @RequiredRoles(name="private method", id=5) //类方法注解        private void c(){            Map m = new HashMap(0);        }    }        public static void parseTypeAnnotation() throws ClassNotFoundException {          Class clazz = Class.forName("Annote$UserAnnotation");                Annotation[] annotations = clazz.getAnnotations();                for (Annotation annotation : annotations) {              RequiredRoles testA = (RequiredRoles)annotation;            System.out.println("id= "+testA.id()+" name= "+testA.name());          }      }         public static void parseMethodAnnotation(){        Method[] methods = UserAnnotation.class.getDeclaredMethods();          for (Method method : methods) {                          boolean hasAnnotation = method.isAnnotationPresent(RequiredRoles.class);              if (hasAnnotation) {                                  RequiredRoles annotation = method.getAnnotation(RequiredRoles.class);                  System.out.println("method = " + method.getName()  + " ; id = " + annotation.id() + " ; description = "+ annotation.name());              }          }      }            public static void main(String[] args) throws ClassNotFoundException{        parseTypeAnnotation();                parseMethodAnnotation();    }    }

详细参考:http://blog.sina.com.cn/s/blog_93dc666c0101gzn5.html

 

1、注解本质是就是对类、属性、方法的注释 2、区别是,如果在声明注解的时候加上了 @Retention(RetentionPolicy.RUNTIME) 属性, 就可以在运行的时候通过代码读取到具体的注解内容,而注释在运行时是读取不到的

 

 

http://baike.baidu.com/link?url=xToxlcR_PfOKUq4NOxxB1_LfwbFcAVYyGUci9iCgiiyLavSVRAqieOWQ9BJ9IWbk1thMYhAcrr78mr0sLCpgGK

转载地址:http://tjdia.baihongyu.com/

你可能感兴趣的文章
PT 转 PX
查看>>
平凡世界里的万千思绪
查看>>
(二)java环境搭建
查看>>
深入推荐引擎相关算法 - 协同过滤2
查看>>
mybatis逆向工程之配置
查看>>
使用.NET 4.0+ 操作64位系统中的注册表
查看>>
剑指offer——面试题26:判断二叉树B是否为二叉树A的子结构
查看>>
scrapy主动退出爬虫的代码片段
查看>>
ny12 喷水装置(二)
查看>>
C\C++语言细节(2)
查看>>
Jenkins持续部署-自动生成版本号
查看>>
设计模式--代理模式
查看>>
javascript基础知识--最基础的
查看>>
[转] vue自定义组件(通过Vue.use()来使用)即install的使用
查看>>
[转] 函数声明和函数表达式——函数声明的声明提前
查看>>
敢死队2影评
查看>>
浅析 JavaScript 中的 apply 和 call 用法的差异
查看>>
html5-css综合练习
查看>>
嵌入式开发之cgic库---cgi库的使用
查看>>
clickhouse安装 Requires: libstdc++.so.6(GLIBCXX_3.4.19)(64bit)
查看>>