首页 > 编程语言 >Java反射解析注解

Java反射解析注解

时间:2022-10-13 12:12:21浏览次数:38  
标签:java annotation Java groups import 注解 解析 Class

 

package com.jeeplus.config;

import javax.validation.constraints.Size;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Arrays;

/**
 * @author Mr.css
 * @version 2022-10-08 9:51
 */
public class Test {

    @Size(groups = {Test.class})
    private String name;

    public static void main(String[] args) throws NoSuchFieldException, NoSuchMethodException, InvocationTargetException, IllegalAccessException {
        Class<?> clazz = Test.class;

        // 遍历 name 字段上的注解
        Field field = clazz.getDeclaredField("name");
        Annotation[] annotations = field.getAnnotations();
        // 因为只有 1 个注解,所以读到的必定是 @Size
        for (Annotation annotation: annotations){
            Class<?> cla = annotation.annotationType();
            // 注解的字段,看起来是 field,实际上是 method,需要通过 invoke() 获取属性值
            Method method = cla.getDeclaredMethod("groups");
            Class<?>[] groups = (Class<?>[]) method.invoke(annotation);
            System.out.println(Arrays.toString(groups));
        }
    }
}

 

标签:java,annotation,Java,groups,import,注解,解析,Class
From: https://www.cnblogs.com/chenss15060100790/p/16787741.html

相关文章

  • JAVA并发之阻塞队列浅析
    JAVA并发之阻塞队列浅析背景因为在工作中经常会用到阻塞队列,有的时候还要根据业务场景获取重写阻塞队列中的方法,所以学习一下阻塞队列的实现原理还是很有必要的。(PS:不深......
  • java常用api
    day01【Object类、常用API】主要内容Object类Date类DateFormat类Calendar类System类StringBuilder类包装类教学目标-[]能够说出Object类的特点-[]能够重写Object类的to......
  • 2020年Java最新面试题,2020年常见面试题及答案汇总
    2020最新Java面试题,2020常见面试题及答案汇总1、作用域public,private,protected,以及不写时的区别答:区别如下:2、AnonymousInnerClass(匿名内部类)是否可以extends(继......
  • java使用casbin
    casbincasbin是一个强大的、高效的开源访问控制框架,其权限管理机制支持多种访问控制模型。,而业界常常使用的RBAC(基于角色的权限访问控制),也是很完美的支持.整个项目......
  • Java实战项目双11互联网电商秒杀系统解决方案(视频+源码)
    技术类型:UI设计资源分类:学习视频资料文件大小:5.22G Java实战项目双11互联网电商秒杀系统解决方案(视频+源码)共计视频课程66课时+源码+相关软件+相关文档 下载地址:点......
  • Java集合框架
    什么是集合概念:对象的容器,定义了对多个对象进行操作的常用方法。可以实现数组的功能和数组的区别:数组长度固定,集合长度不固定数组可以存储基本类型和引用类型,集合只......
  • 力扣554(java&python)-砖墙(中等)
    题目:你的面前有一堵矩形的、由n行砖块组成的砖墙。这些砖块高度相同(也就是一个单位高)但是宽度不同。每一行砖块的宽度之和相等。你现在要画一条自顶向下的、穿过最......
  • Java基础语法 二维数组
    二维数组packagecom.ljg.java;/**二维数组的使用:* 规定:二维数组分为外层数组的元素,内层数组的元素* int[][]arr=newint[4][3];* 外层元素:arr[0],arr[......
  • 面试官:Java 多线程怎么做事务控制?一半人答不上来。。
    项目代码基于:MySql数据,开发框架为:SpringBoot、Mybatis开发语言为:Java8前言公司业务中遇到一个需求,需要同时修改最多约5万条数据,而且还不支持批量或异步修改操作。于是......
  • Java查漏补缺——四种引用
    今天复习到一种没看到过的Java知识点,是关于内存不足时Java对象的建立的。引用Java对每一个对象的使用被称为Java的引用,类似于C和C++的指针,引用则是调用对象和对象方......