java获取注解信息_Java通过反射获取注解信息————自学笔记

自定义几个注解用于测试

@MyAnnotation01

@Target(ElementType.TYPE)

@Retention(RetentionPolicy.RUNTIME)

public @interface MyAnnotation01 {

String[] value();

}

@Table

@Target(value = ElementType.FIELD)

@Retention(value = RetentionPolicy.RUNTIME)

public @interface Range {

int max();

int min();

}

@Range

@Target(ElementType.TYPE)

@Retention(RetentionPolicy.RUNTIME)

public @interface Table {

String value();

}

定义一个实体类Studnet

package com.lee.myAnnotation;

@Table("student_info")

@MyAnnotation01(value = "Student")

public class Student {

public Student() {

}

public Student(int id, String name, int age) {

super();

this.id = id;

this.name = name;

this.age = age;

}

private int id;

private String name;

@Range(max = 100, min = 0)

private int age;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

}

测试类

package com.lee.myAnnotation;

import java.lang.annotation.Annotation;

import java.lang.reflect.Field;

/**

*

* @author Lee

*/

public class Test {

public static void main(String[] args) {

try {

Class c = Class.forName("com.lee.myAnnotation.Student");

//获取类的注解

Annotation[] annotations01 = c.getAnnotations();

for (Annotation annotation : annotations01) {

System.out.println(annotation);

}

//获取属性的注解

Field f1 = c.getDeclaredField("age");

Annotation[] annotations02 = f1.getAnnotations();

for (Annotation annotation : annotations02) {

System.out.println(annotation);

}

//获取指定的注解

Table table = (Table) c.getAnnotation(Table.class);

System.out.println(table);

//获取注解里的信息

Field f2 = c.getDeclaredField("age");

Range r = f2.getAnnotation(Range.class);

System.out.println("最大值:"+r.max() +"\n最小值:"+r.min());

} catch (Exception e) {

e.printStackTrace();

}

}

}

输出结果:

9fba17ef6bc01074500040fa3104198e.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值