java注解使用、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 字段 赋值,并使用反射取值。 
* 特别提醒: @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()); // 中华人民共和国
    }
}

 

三、学习更多

   1、 java注解学习---元注解,注解类型,注解支持元素类型,注解基础(一)

   2、java注解学习---自定义注解定义java注解(二)

   3、java注解学习---@Target({ElementType.PACKAGE})理解和使用(三)

   4、java注解学习---@Inherited注解的理解学习(四)   

 

你可能感兴趣的:(Java)