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

深入解析Java中反射中的invoke()方法

 更新時間:2021年06月01日 15:09:42   作者:碼上猿夢  
最近復(fù)習(xí)了一下Java反射的使用,正好了解一下Java中反射中的invoke()方法,稍微整理精簡一下做下分享,感興趣的可以了解一下

先講一下java中的反射:

反射就是將類別的各個組成部分進(jìn)行剖析,可以得到每個組成部分,就可以對每一部分進(jìn)行操作

反射機(jī)制應(yīng)用場景:逆向代碼、動態(tài)生成類框架等,使用反射機(jī)制能夠大大的增強(qiáng)程序的擴(kuò)展性。

反射的基本步驟:首先獲得Class對象,然后實例化對象,獲得類的屬性、方法或者構(gòu)造函數(shù),最后訪問屬性、調(diào)用方法、調(diào)用構(gòu)造函數(shù)創(chuàng)建對象。而invoke()方法就是用來執(zhí)行指定對象的方法。

在比較復(fù)雜的程序或框架中來使用反射技術(shù),可以簡化代碼提高程序的復(fù)用性。

講的是Method類的invoke()方法。

既然是講invoke方法,那就不講怎么使用反射了,代碼上來先:

package online;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

import org.junit.Test;

public class Msym {
    
    public void test(String[] arg){
        for (String string : arg) {
            System.out.println(string);
        }
    }
    @Test
    public void demo1() throws Exception {
        //獲取字節(jié)碼對象
        Class<Msym> clazz = (Class<Msym>) Class.forName("online.Msym");
        //獲取一個對象
        Constructor con =  clazz.getConstructor();
        Msym m = (Msym) con.newInstance();
        String[] s = new String[]{"aa","bb"};
        //獲取Method對象
        Method method = clazz.getMethod("test", String[].class);
        //調(diào)用invoke方法來調(diào)用
        method.invoke(m, s);
    }
}

測試會報錯:

紅色框框顯示是參數(shù)錯誤,test方法需要是字符串?dāng)?shù)組啊,我傳遞也是字符串?dāng)?shù)組,怎么就不對了??

讓我們來看一下invoke方法:

invoke方法的參數(shù),一個是Object類型,也就是調(diào)用該方法的對象,

第二個參數(shù)是一個可變參數(shù)類型,這個可變參數(shù)類型怎么能傳遞給一個數(shù)組類型呢?一個是多個參數(shù)。一個是一個數(shù)組參數(shù),顯然參數(shù)的個數(shù)不匹配,怎么解決呢?

解決辦法就是將可變參數(shù)變成一個參數(shù):

  • 將傳遞進(jìn)去的s強(qiáng)轉(zhuǎn)為Object類型
  • 將s重新包裝成一個Object數(shù)組

測試一下:

結(jié)果可行。

作者:碼上猿夢
出處:http://www.cnblogs.com/daimajun/

到此這篇關(guān)于深入解析Java中反射中的invoke()方法的文章就介紹到這了,更多相關(guān)Java invoke()內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java數(shù)據(jù)結(jié)構(gòu)之單鏈表的實現(xiàn)與面試題匯總

    Java數(shù)據(jù)結(jié)構(gòu)之單鏈表的實現(xiàn)與面試題匯總

    由于順序表的插入刪除操作需要移動大量的元素,影響了運(yùn)行效率,因此引入了線性表的鏈?zhǔn)酱鎯Α獑捂湵?。本文為大家介紹了單鏈表的實現(xiàn)與面試題匯總,感興趣的可以了解一下
    2022-10-10
  • springboot整合security和vue的實踐

    springboot整合security和vue的實踐

    本文主要介紹了springboot整合security和vue的實踐,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • HttpClient的RedirectStrategy重定向處理核心機(jī)制

    HttpClient的RedirectStrategy重定向處理核心機(jī)制

    這篇文章主要為大家介紹了HttpClient的RedirectStrategy重定向處理核心機(jī)制源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Java多維數(shù)組和Arrays類方法總結(jié)詳解

    Java多維數(shù)組和Arrays類方法總結(jié)詳解

    這篇文章主要介紹了Java多維數(shù)組和Arrays類方法總結(jié)詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • SSM框架搭建圖文教程(推薦)

    SSM框架搭建圖文教程(推薦)

    下面小編就為大家?guī)硪黄猄SM框架搭建圖文教程(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Java 過濾器實現(xiàn)敏感詞匯過濾功能

    Java 過濾器實現(xiàn)敏感詞匯過濾功能

    通過使用 Java 過濾器,我們可以輕松地實現(xiàn)敏感詞匯過濾的功能,以保護(hù)用戶免受不良內(nèi)容的侵害,讓我們通過一個簡單的示例來演示我們的敏感詞匯過濾器是如何工作的,感興趣的朋友一起看看吧
    2024-01-01
  • 詳解如何實現(xiàn)SpringBoot的底層注解

    詳解如何實現(xiàn)SpringBoot的底層注解

    今天給大家?guī)淼奈恼率侨绾螌崿F(xiàn)SpringBoot的底層注解,文中有非常詳細(xì)的介紹及代碼示例,對正在學(xué)習(xí)java的小伙伴很有幫助,需要的朋友可以參考下
    2021-06-06
  • Java中的可變參數(shù)常見用法實例總結(jié)

    Java中的可變參數(shù)常見用法實例總結(jié)

    這篇文章主要介紹了Java中的可變參數(shù)常見用法,結(jié)合實例形式總結(jié)分析了java可變參數(shù)的常見功能、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2019-10-10
  • 基于springboot的flowable工作流實戰(zhàn)流程分析

    基于springboot的flowable工作流實戰(zhàn)流程分析

    這篇文章主要介紹了基于springboot的flowable工作流實戰(zhàn)流程分析,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10
  • Hashmap非線程安全關(guān)于hash值沖突處理

    Hashmap非線程安全關(guān)于hash值沖突處理

    這篇文章主要為大家介紹了Hashmap非線程安全關(guān)于hash值沖突的處理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04

最新評論

耿马| 嵊泗县| 清流县| 睢宁县| 清水县| 仙桃市| 正安县| 台北县| 保定市| 东乌| 宁晋县| 木里| 芮城县| 塘沽区| 景谷| 伽师县| 哈巴河县| 舟山市| 黄大仙区| 瓮安县| 公安县| 漳浦县| 珠海市| 巴彦县| 布拖县| 潍坊市| 南郑县| 渝中区| 五常市| 东兰县| 海盐县| 阿克陶县| 天全县| 杨浦区| 岳普湖县| 岚皋县| 江北区| 勃利县| 麻栗坡县| 汾西县| 清丰县|