java 注解值_java注解使用、java获取注解的属性、获取注解的字段值

  • Post author:
  • Post category: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()); // 中华人民共和国

}

}


版权声明:本文为weixin_35950531原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。