zoukankan      html  css  js  c++  java
  • java注解使用、java获取注解的属性、获取注解的字段值

    一、前言

    1、前面一直讲注解的基础知识,注解的定义,对于注解的使用几乎是一笔略过,本篇将着重讲讲注解的使用。 获取注解的属性,通过反射获取注解的属性值。

    二、示例代码

    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 字段 赋值,并使用反射取值。 <br>
    * 特别提醒: @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、定义一个注解 。

    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: 定义一个注解。
    * @version v1.0
    * @author w
    * @date 2018年8月1日下午2:41:45
    */
    @Documented
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.TYPE)
    public @interface ConsAnnotation {
    String[] request();
    }
     

    3、创建一个普通的类,使用 @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;
    }
    }

    4、针对 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()); // 中华人民共和国
    }
    }

  • 相关阅读:
    正则表达式
    什么是面向对象
    关于jdk,jre,jvm和eclipse的一些总结
    分析ajax爬取今日头条街拍美图
    pycharm误删恢复方法及python扩展包下载地址
    django 之 视图层、模板层
    django
    django框架基础二
    jdango框架基础一
    安装软件,提高速度,可以使用清华源
  • 原文地址:https://www.cnblogs.com/JAYIT/p/12436380.html
Copyright © 2011-2022 走看看