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()); // 中华人民共和国

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>