java代码获取注解内容 java获取方法的注解

java获取注解的值

很多朋友都想知道java怎么获取注解的值?下面就一起来了解一下吧~

成都创新互联公司是一家专注于成都网站设计、网站制作与策划设计,无锡网站建设哪家好?成都创新互联公司做网站,专注于网站建设十载,网设计领域的专业建站公司;建站业务涵盖:无锡等地区。无锡做网站价格咨询:18982081108

1、定义一个注解,用于给全局变量field字段赋值

package com.haha.study.annotation.value; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * description: 定义一个注解,用于给 全局变量 field 字段 赋值,并使用反射取值。 

* 特别提醒: @Rentention(RetentionPolicy.RUNTIME) 时,注解才会被jvm加载,才能使用反射获取。 * @version v1.0 * @author w * @date 2018年8月1日下午2:37:40 */ @Documented @Retention(RetentionPolicy.RUNTIME) @Target(value=ElementType.FIELD) public @interface Fields { int sort() default 0 ; String value() ; }

2、创建一个普通的类,使用 @ConsAnnotation、@Fields 注解

package com.haha.study.annotation.value; /** * description: 创建一个普通的类,使用 @ConsAnnotation、@Fields 注解。 * @version v1.0 * @author w * @date 2018年8月1日下午2:50:23 */ @ConsAnnotation(request = { "hello","world","annotation!" }) public class User { @Fields("中华人民共和国") private String userName; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } }

3、针对 com.haha.study.annotation.value.User 类使用注解的测试

package com.haha.study.annotation.value; import java.lang.reflect.Field; import java.util.Arrays; /** * description: 针对 com.haha.study.annotation.value.User 类使用注解的测试 * @version v1.0 * @author w * @date 2018年8月1日下午2:37:13 */ public class ValueTest { public static void main(String[] args) throws Exception { User user = new User(); // 1、 获取 User类上的注解 @ConsAnnotation ConsAnnotation anno = user.getClass().getAnnotation(ConsAnnotation.class); String[] arr = anno.request(); System.out.println(Arrays.toString(arr)); // [hello, world, annotation!] // 2、 获取User类中 private String userName; 变量上的注解 @Field Field f = user.getClass().getDeclaredField("userName"); Fields anno2 = f.getAnnotation(Fields.class); user.setUserName(anno2.value()); System.out.println(user.getUserName()); // 中华人民共和国 } }

Java 注解的读取注解信息的方法

属于重点,在系统中用到注解权限时非常有用,可以精确控制权限的粒度

注意:要想使用反射去读取注解,必须将Retention的值选为Runtime Java代码import java.lang.annotation.Annotation;import java.lang.reflect.Method;//读取注解信息public class ReadAnnotationInfoTest {    public static void main(String[] args) throws Exception {        // 测试AnnotationTest类,得到此类的类对象        Class c = Class.forName(com.iwtxokhtd.annotation.AnnotationTest);        // 获取该类所有声明的方法        Method[] methods = c.getDeclaredMethods();        // 声明注解集合        Annotation[] annotations;        // 遍历所有的方法得到各方法上面的注解信息        for (Method method : methods) {            // 获取每个方法上面所声明的所有注解信息            annotations = method.getDeclaredAnnotations();            // 再遍历所有的注解,打印其基本信息            System.out.println(method.getName());            for (Annotation an : annotations) {                System.out.println(方法名为: + method.getName() + 其上面的注解为: + an.annotationType().getSimpleName());                Method[] meths = an.annotationType().getDeclaredMethods();                // 遍历每个注解的所有变量                for (Method meth : meths) {                    System.out.println(注解的变量名为: + meth.getName());                }            }        }    }}

java获取当前类上的注解内容

@Retention(RetentionPolicy.RUNTIME) // 注解会在class字节码文件中存在,在运行时可以通过反射获取到

@Target({ElementType.FIELD,ElementType.METHOD})//定义注解的作用目标**作用范围字段、枚举的常量/方法

@Documented//说明该注解将被包含在javadoc中

public @interface FieldMeta {

/**

* 是否为序列号

* @return

*/

boolean id() default false;

/**

* 字段名称

* @return

*/

String name() default "";

/**

* 是否可编辑

* @return

*/

boolean editable() default true;

/**


当前文章:java代码获取注解内容 java获取方法的注解
文章出自:http://azwzsj.com/article/docpscc.html