欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文詳解Java中的反射api

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

1. 調用無參數(shù)構造器得到一個類的對象返回

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

2. 調用有參數(shù)構造器得到一個類的對象返回

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

3. 獲取全部的成員變量

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

4. 獲取某個成員變量 并為其賦值

public static void main(String[] args) throws Exception {
    // 反射第一步先得到Class對象
    Class c = Person.class;
    // 獲取全部聲明的成員變量對象
    Field nameField = c.getDeclaredField("name");
    System.out.println(nameField.getName() + "--->>" + nameField.getType());
    Person person = new Person();
    nameField.setAccessible(true); // 因為是私有屬性 采用暴力反射!
    /**
     * 參數(shù)1:被賦值的對象
     * 參數(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對象
    Class c = Person.class;
    // 獲取所有的方法
    Method[] methods = c.getDeclaredMethods();
    // 遍歷看一下
    for (Method method : methods) {
        // 方法名稱 參數(shù)個數(shù) 返回值類型
        System.out.println(method.getName() + "->" + method.getParameterCount() + "->" + method.getReturnType());
    }
}

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

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

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

相關文章

  • java自定義日期轉化類示例

    java自定義日期轉化類示例

    這篇文章主要介紹了java自定義日期轉化類示例,需要的朋友可以參考下
    2014-05-05
  • java按豎線分割的實現(xiàn)

    java按豎線分割的實現(xiàn)

    在Java中,我們可以使用split()方法按豎線分割字符串,本文將介紹如何使用Java中的字符串分割方法來按豎線進行分割,同時提供代碼示例來幫助讀者理解,感興趣的可以了解一下
    2024-01-01
  • SpringBoot解析yml全流程詳解

    SpringBoot解析yml全流程詳解

    本文主要介紹了SpringBoot解析yml全流程詳解,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • dubbo自定義異常的完整步驟與測試

    dubbo自定義異常的完整步驟與測試

    最近在項目上遇到一個有關dubbo的問題,想著給大家總結下,這篇文章主要給大家介紹了關于dubbo自定義異常的完整步驟與測試的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • Springboot分模塊項目搭建的實現(xiàn)

    Springboot分模塊項目搭建的實現(xiàn)

    在軟件開發(fā)中,利用Spring?Boot進行分模塊項目搭建能夠提高代碼的模塊化和復用性,本文主要介紹了Springboot分模塊項目搭建的實現(xiàn),感興趣的可以了解一下
    2024-10-10
  • 使用Mybatis-plus實現(xiàn)對數(shù)據庫表的內部字段進行比較

    使用Mybatis-plus實現(xiàn)對數(shù)據庫表的內部字段進行比較

    這篇文章主要介紹了使用Mybatis-plus實現(xiàn)對數(shù)據庫表的內部字段進行比較方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • kafka啟動報錯(Cluster ID)不匹配問題以及解決

    kafka啟動報錯(Cluster ID)不匹配問題以及解決

    這篇文章主要介紹了kafka啟動報錯(Cluster ID)不匹配問題以及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 詳解Spring AOP 攔截器的基本實現(xiàn)

    詳解Spring AOP 攔截器的基本實現(xiàn)

    本篇文章主要介紹了詳解Spring AOP 攔截器的基本實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • jdbc實現(xiàn)用戶注冊功能代碼示例

    jdbc實現(xiàn)用戶注冊功能代碼示例

    這篇文章主要介紹了jdbc實現(xiàn)用戶注冊功能,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • springboot+mongodb 實現(xiàn)按日期分組分頁查詢功能

    springboot+mongodb 實現(xiàn)按日期分組分頁查詢功能

    這篇文章主要介紹了springboot+mongodb 實現(xiàn)按日期分組分頁查詢功能,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-07-07

最新評論