获取自定义注解上的值

package 自定义注解;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface AnnotationTest {
    String age() default "20";
    String name() default "fz";

}
 

 

package 自定义注解;
public class Person {
        @AnnotationTest(name = "fg")
        private String name;
        @AnnotationTest(age="24")
        private String age;
}

 

 

package 自定义注解;

import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedType;
import java.lang.reflect.Field;
/*
 * 1.首先获取优质定义注解修饰类的类对象,根据类对象获取对应的属性。
 * 2.判断属性上是否有注解修饰,有就获取对应的注解。(通过属性获取对应的注解,获取属性上的值就用属性去declaredField.getAnnotation(AnnotationTest.class);)
 * 3.为属性赋值。第一步中的属性赋值为注解中获取的属性值。
 * 
 * */

public class Test {
    public static void main(String[] args) throws Exception {
        Class p=Person.class;
        Field declaredField = p.getDeclaredField("name");
        declaredField.setAccessible(true);
        if(declaredField.isAnnotationPresent(AnnotationTest.class)) {
            AnnotationTest annotation = declaredField.getAnnotation(AnnotationTest.class);
            
            
            //System.out.println(annotation.age()+":"+annotation.name());
            String name = annotation.name();
            Person p1=new Person();
            declaredField.set(p1, name);//为declaredfield属性赋name值,其中name必须是p1中的属性。所以需要p1对象
            System.out.println(declaredField.get(p1));

            
            
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值