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

一文詳解Java中的反射api

 更新時(shí)間:2025年02月05日 09:01:04   作者:會(huì)說(shuō)法語(yǔ)的豬  
這篇文章主要為大家詳細(xì)介紹了Java中的6個(gè)反射api,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下

1. 調(diào)用無(wú)參數(shù)構(gòu)造器得到一個(gè)類(lèi)的對(duì)象返回

public static void main(String[] args) throws Exception {
    // 反射第一步先得到Class對(duì)象
    Class c = Person.class;
    // 定位無(wú)參構(gòu)造器對(duì)象
    Constructor constructor = c.getDeclaredConstructor();
    // 暴力打開(kāi)私有構(gòu)造器的訪問(wèn)權(quán)限(如果是私有構(gòu)造器、private 就可以使用setAccessible暴力打開(kāi))
    constructor.setAccessible(true);
    // 通過(guò)無(wú)參數(shù)構(gòu)造器初始化對(duì)象返回
    Person person = (Person) constructor.newInstance();
    System.out.println(person);
}

2. 調(diào)用有參數(shù)構(gòu)造器得到一個(gè)類(lèi)的對(duì)象返回

public static void main(String[] args) throws Exception {
    // 反射第一步先得到Class對(duì)象
    Class c = Person.class;
    // 定位無(wú)參構(gòu)造器對(duì)象
    Constructor constructor = c.getDeclaredConstructor(String.class, Integer.class, String.class);
    // 暴力打開(kāi)私有構(gòu)造器的訪問(wèn)權(quán)限(如果是私有構(gòu)造器、private 就可以使用setAccessible暴力打開(kāi))
    // constructor.setAccessible(true);
    // 通過(guò)無(wú)參數(shù)構(gòu)造器初始化對(duì)象返回
    Person person = (Person) constructor.newInstance("WFT", 18, "1.88");
    System.out.println(person);
}

3. 獲取全部的成員變量

public static void main(String[] args) throws Exception {
    // 反射第一步先得到Class對(duì)象
    Class c = Person.class;
    // 獲取全部聲明的成員變量對(duì)象
    Field[] fields = c.getDeclaredFields();
    for (Field field : fields) {
        System.out.println(field.getName() + "-->>" + field.getType());
    }
}

4. 獲取某個(gè)成員變量 并為其賦值

public static void main(String[] args) throws Exception {
    // 反射第一步先得到Class對(duì)象
    Class c = Person.class;
    // 獲取全部聲明的成員變量對(duì)象
    Field nameField = c.getDeclaredField("name");
    System.out.println(nameField.getName() + "--->>" + nameField.getType());
    Person person = new Person();
    nameField.setAccessible(true); // 因?yàn)槭撬接袑傩?采用暴力反射!
    /**
     * 參數(shù)1:被賦值的對(duì)象
     * 參數(shù)2:該成員變量的值
     */
    nameField.set(person, "王大錘");
    System.out.println(person);
    /**
     * 獲取改成員變量的值
     */
    String name = nameField.get(person) + "";
    System.out.println(name);
}

5. 獲取所有的methods方法

public static void main(String[] args) {
    // 反射第一步先得到Class對(duì)象
    Class c = Person.class;
    // 獲取所有的方法
    Method[] methods = c.getDeclaredMethods();
    // 遍歷看一下
    for (Method method : methods) {
        // 方法名稱(chēng) 參數(shù)個(gè)數(shù) 返回值類(lèi)型
        System.out.println(method.getName() + "->" + method.getParameterCount() + "->" + method.getReturnType());
    }
}

6.  獲取某個(gè)methods方法并執(zhí)行

public static void main(String[] args) throws Exception {
    // 反射第一步先得到Class對(duì)象
    Class c = Person.class;
    // 獲取setName方法
    Method setName = c.getDeclaredMethod("setName", String.class);
    // 調(diào)用方法
    Person person = new Person();
    Object o = setName.invoke(person, "WFT"); // 如果方法沒(méi)有返回值  返回值為null
    System.out.println(o);
    System.out.println(person);
}

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

相關(guān)文章

  • Java UUID 五個(gè)版本的區(qū)別及使用場(chǎng)景小結(jié)

    Java UUID 五個(gè)版本的區(qū)別及使用場(chǎng)景小結(jié)

    在Java中,UUID是一個(gè)128位的唯一標(biāo)識(shí)符,廣泛應(yīng)用于生成唯一標(biāo)識(shí)符、分布式系統(tǒng)唯一鍵等場(chǎng)景,Java提供的java.util.UUID類(lèi)支持五種UUID版本,每種具有不同的生成方式和使用場(chǎng)景,本文就來(lái)介紹一下如何使用,感興趣的可以了解一下
    2024-11-11
  • System.currentTimeMillis()計(jì)算方式與時(shí)間的單位轉(zhuǎn)換詳解

    System.currentTimeMillis()計(jì)算方式與時(shí)間的單位轉(zhuǎn)換詳解

    這篇文章主要介紹了System.currentTimeMillis()計(jì)算方式與時(shí)間的單位轉(zhuǎn)換詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • JAVA中static方法的用法實(shí)例詳解

    JAVA中static方法的用法實(shí)例詳解

    這篇文章主要介紹了JAVA中static方法的用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Java中static方法的功能、使用技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2015-12-12
  • Java使用Jsoup實(shí)現(xiàn)將瀏覽器書(shū)簽HTML轉(zhuǎn)換為JSON

    Java使用Jsoup實(shí)現(xiàn)將瀏覽器書(shū)簽HTML轉(zhuǎn)換為JSON

    這篇文章主要介紹了如何使用Jsoup和Fastjson2將瀏覽器導(dǎo)出的書(shū)簽HTML文件解析為層級(jí)化的JSON結(jié)構(gòu),文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以了解下
    2026-01-01
  • Java中ArrayList單行初始化的多種方法

    Java中ArrayList單行初始化的多種方法

    在Java開(kāi)發(fā)中,我們經(jīng)常需要初始化列表,尤其是ArrayList,用于存儲(chǔ)和管理數(shù)據(jù),為了提高代碼的簡(jiǎn)潔性和可讀性,我們希望能在一行代碼內(nèi)完成ArrayList的初始化,本文將介紹多種在Java中單行初始化ArrayList的方法,需要的朋友可以參考下
    2025-07-07
  • 基于Java制作一個(gè)好玩的打飛機(jī)游戲

    基于Java制作一個(gè)好玩的打飛機(jī)游戲

    這篇文章主要介紹了基于Java制作的打飛機(jī)小游戲,這里整理了詳細(xì)的代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Java獲取classpath根路徑的三種方法

    Java獲取classpath根路徑的三種方法

    本文介紹了在Java中獲取classpath根路徑的三種方法:ClassLoader.getResource、Class.getResource和System.getProperty,每種方法都有其適用場(chǎng)景,開(kāi)發(fā)者可以根據(jù)具體需求選擇合適的方法,需要的朋友可以參考下
    2026-01-01
  • MyBatis一級(jí)緩存與二級(jí)緩存原理與作用分析

    MyBatis一級(jí)緩存與二級(jí)緩存原理與作用分析

    mybatis-plus是一個(gè)Mybatis的增強(qiáng)工具,在Mybatis的基礎(chǔ)上只做增強(qiáng)不做改變,為簡(jiǎn)化開(kāi)發(fā)、提高效率而生,這篇文章帶你了解Mybatis的一級(jí)和二級(jí)緩存
    2022-12-12
  • 一文帶你看懂Android動(dòng)畫(huà)的實(shí)現(xiàn)原理

    一文帶你看懂Android動(dòng)畫(huà)的實(shí)現(xiàn)原理

    動(dòng)畫(huà)是 Android 應(yīng)用程序中重要的交互特性,ndroid 提供了多種動(dòng)畫(huà)效果,包括平移、縮放、旋轉(zhuǎn)和透明度等,它們可以通過(guò)代碼或 XML 來(lái)實(shí)現(xiàn),本文將介紹 Android 動(dòng)畫(huà)的原理和實(shí)現(xiàn)方法,并提供一些示例,需要的朋友可以參考下
    2023-07-07
  • 解決SpringSecurity 一直登錄失敗的問(wèn)題

    解決SpringSecurity 一直登錄失敗的問(wèn)題

    這篇文章主要介紹了解決SpringSecurity 一直登錄失敗的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評(píng)論

连州市| 克拉玛依市| 遵义县| 桃园县| 莆田市| 汾西县| 恩平市| 丰镇市| 色达县| 吉木萨尔县| 河池市| 潮州市| 自贡市| 青川县| 宝鸡市| 隆昌县| 田阳县| 甘谷县| 阿巴嘎旗| 灵璧县| 行唐县| 长武县| 黔西县| 甘孜| 青浦区| 行唐县| 嘉义市| 当阳市| 丹巴县| 道孚县| 洪泽县| 马公市| 宕昌县| 五家渠市| 黄龙县| 长武县| 扶绥县| 故城县| 定安县| 满城县| 贵溪市|