最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java動態(tài)設置注解值及原理詳解

 更新時間:2023年11月27日 09:58:43   作者:一碼評川  
這篇文章主要介紹了Java動態(tài)設置注解值及原理詳解,AnnotationInvocationHandler是注解的代理hander,通過反射獲取類的注解時會通過AnnotationInvocationHandler創(chuàng)建代理對象并將數(shù)據(jù)存儲到memberValues里,需要的朋友可以參考下

Java動態(tài)注解值原理

描述:在運行時根據(jù)需求更改注解中的值

一、步驟

1.定義類

public class CadreListQueryDTO extends CadreBaseQueryDTO {

    /**
     * 出國事由
     */
    @QueryField(field = "A21.a2114",type = QueryField.LIKE)
    private String a2114;
}

2.定義方法進行動態(tài)設置

    /**
     * 動態(tài)設置注解值
     *
     * @param annotation  
     * @param valueName
     * @param value
     * @param <T>
     */
    @SneakyThrows
    public static <T extends Annotation> void setValueToAnnotate(T annotation, String valueName, Object value) {
        InvocationHandler invocationHandler = null;
        if (Objects.nonNull(annotation)) {
            invocationHandler = Proxy.getInvocationHandler(annotation);
        }
        if (Objects.isNull(invocationHandler)) {
            return;
        }
        Field nameField = invocationHandler.getClass().getDeclaredField("memberValues");
        nameField.setAccessible(true);
        Map<String, Object> memberValues = (Map<String, Object>) nameField.get(invocationHandler);
        memberValues.put(valueName, value);
    }

3.測試

 public static void main(String[] args) {
        try {
            QueryField queryField =  CadreListQueryDTO.class.getDeclaredField("a2114").getAnnotation(QueryField.class);
            System.out.println("修改前:"+ queryField.field());
            setValueToAnnotate(queryField,"field","哈哈哈哈");
            System.out.println("修改前:"+ queryField.field());
        } catch (NoSuchFieldException e) {
            throw new RuntimeException(e);
        }
    }

在這里插入圖片描述

二、原理分析

  • AnnotationInvocationHandler是注解的代理hander
  • 通過反射獲取類的注解時會通過AnnotationInvocationHandler創(chuàng)建代理對象并將數(shù)據(jù)存儲到memberValues里

在這里插入圖片描述

修改memberValues里的數(shù)據(jù)

在這里插入圖片描述

獲取結果

在這里插入圖片描述

到此這篇關于Java動態(tài)設置注解值及原理詳解的文章就介紹到這了,更多相關Java動態(tài)注解值原理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • SpringBoot項目與Nacos配置全過程

    SpringBoot項目與Nacos配置全過程

    本文介紹了如何在SpringBoot項目中使用Nacos作為配置中心,實現(xiàn)動態(tài)配置管理和實時更新配置的能力,通過配置命名空間和yml文件,創(chuàng)建SpringBoot項目并添加Nacos依賴,編寫Controller和啟動類,配置Tomcat啟動程序,最終在Nacos服務端注冊成功
    2024-11-11
  • Java利用AQS實現(xiàn)自定義鎖

    Java利用AQS實現(xiàn)自定義鎖

    本文主要介紹了Java利用AQS實現(xiàn)自定義鎖,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • 一文帶你了解Java中IO流與Guava的使用

    一文帶你了解Java中IO流與Guava的使用

    Java為我們提供了非常多的操作IO的接口與類,幫助開發(fā)者實現(xiàn)不同源間的數(shù)據(jù)傳輸,比如硬盤文件、網(wǎng)絡傳輸、應用調(diào)用間的數(shù)據(jù)交互與傳遞。今天我們來簡單了解下Java中的流?以及在Guava工具包中,針對IO操作做了什么樣的封裝與設計
    2022-11-11
  • java 字浮串提取方法匯集

    java 字浮串提取方法匯集

    用方法toCharArray public char[] toCharArray()
    2008-10-10
  • springIoc及注解的使用實例詳解

    springIoc及注解的使用實例詳解

    注解(Annotation)是一種在 Java 程序中以元數(shù)據(jù)的形式對代碼進行標記和說明的機制,它可以被添加到類、方法、字段、參數(shù)等程序元素上,用于提供額外的信息和指示,本文給大家介紹springIoc及注解的使用,感興趣的朋友一起看看吧
    2024-02-02
  • SpringBoot數(shù)據(jù)壓縮實踐方案

    SpringBoot數(shù)據(jù)壓縮實踐方案

    文章探討了Redis中處理大key的壓縮方案,包括拆分JSON結構、使用GZIP/Deflater壓縮、優(yōu)化體積(如移除空格、縮短鍵名)、流式處理及分段存儲,旨在降低內(nèi)存負擔并提升性能,感興趣的朋友跟隨小編一起看看吧
    2025-10-10
  • windows系統(tǒng)配置Java開發(fā)環(huán)境變量

    windows系統(tǒng)配置Java開發(fā)環(huán)境變量

    這篇文章主要介紹了windows系統(tǒng)配置Java開發(fā)環(huán)境變量,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-12-12
  • SpringBoot分布式文件存儲數(shù)據(jù)庫mongod

    SpringBoot分布式文件存儲數(shù)據(jù)庫mongod

    MongoDB是一個基于分布式文件存儲的NoSQL數(shù)據(jù)庫,由C++語言編寫,旨在為Web應用提供可擴展的高性能數(shù)據(jù)存儲解決方案。MongoDB是一個介于關系數(shù)據(jù)庫和非關系數(shù)據(jù)庫之間的產(chǎn)品,是非關系數(shù)據(jù)庫中功能最豐富最像關系數(shù)據(jù)庫的
    2023-02-02
  • 使用java生成字母驗證碼

    使用java生成字母驗證碼

    這篇文章主要介紹了使用java生成字母驗證碼的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Java日常開發(fā)中讀寫TXT文本舉例詳解

    Java日常開發(fā)中讀寫TXT文本舉例詳解

    這篇文章主要給大家介紹了關于Java日常開發(fā)中讀寫TXT文本,包括使用BufferedReader、Scanner、FileInputStream等類進行讀取,以及使用BufferedWriter、PrintWriter、FileOutputStream等類進行寫入,需要的朋友可以參考下
    2024-12-12

最新評論

富顺县| 五台县| 绍兴市| 延川县| 中宁县| 新干县| 桑日县| 衡阳县| 腾冲县| 淮北市| 澳门| 滁州市| 遂川县| 民县| 扶绥县| 扬中市| 泰来县| 孟连| 沁源县| 南丰县| 囊谦县| 南投市| 凤山市| 陆川县| 湄潭县| 湖南省| 青神县| 温州市| 夏河县| 阳东县| 随州市| 南丹县| 铜陵市| 晋宁县| 佛山市| 沙雅县| 崇州市| 合水县| 平陆县| 社旗县| 伊宁市|