中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

跟王老師學反射(六):使用反射調用方法

發布時間:2020-03-19 18:13:02 來源:網絡 閱讀:293 作者:編程魔法師 欄目:開發技術

學習內容

使用反射調用方法


當獲得某個類對應的Class對象后,就可以通過該Class對象的getMethods()方法或getMethod()方法來獲取全部方法或指定方法,這二個方法的返回值是Method對象數組,或者Method對象。

一、public Object invoke(Object obj,  Object... args)

獲得Method對象后,程序就可以通過該Method來調用對應的方法,在Method里包含一個invoke方法。

該方法中的obj是執行該方法的對象,后面的args是執行該方法時傳入該方法的參數

使用參數 args 在 obj 上指派該對象所表示方法的結果 

二、調用方法例子

1
2
3
4
5
6
7
8
9
10
public static void test4()throws Exception{
        Class<Person> personClass = Person.class;
        Person person = personClass.newInstance();
        //得到setName方法
        Method method = personClass.getMethod("setName", String.class);
        //調用setName,為name賦值
        Object object = method.invoke(person, "wangwu");
        System.out.println(person);
        System.out.println(object);
    }

三、注意事項

當通過Method的invoke方法來調用對應的方法時,Java會要求程序必須有調用該方法的權限,如果 程序確實需要調用某個對象的private方法,可以先調用Method對象的如下方法

  • public void setAccessible(boolean flag):將此對象的 accessible 標志設置為指示的布爾值。值為 true 則指示反射的對象在使用時應該取消 Java 語言訪問檢查。值為 false 則指示反射的對象應該實施 Java 語言訪問檢查。

  • public boolean isAccessible():獲取此對象的 accessible 標志的值。

1
2
3
private void setName(String name) {
        this.name = name;
    }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static void test5()throws Exception{
        Class<Person> personClass = Person.class;
        Person person = personClass.newInstance();
        //得到setName方法
        Method method = personClass.getDeclaredMethod("setName", String.class);
        //調用訪問權限檢查
        if(!method.isAccessible()){
            method.setAccessible(true);
        }
        //調用setName,為name賦值
        Object object = method.invoke(person, "wangwu");
        System.out.println(person);
        System.out.println(object);
    }
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

思茅市| 调兵山市| 康平县| 宣恩县| 新津县| 连城县| 德惠市| 鞍山市| 阿拉尔市| 潮州市| 胶州市| 出国| 大悟县| 民勤县| 定远县| 淄博市| 澳门| 滦平县| 株洲县| 漾濞| 昔阳县| 金华市| 潮安县| 韩城市| 盈江县| 麦盖提县| 仁布县| 庆阳市| 玉门市| 宕昌县| 南华县| 金沙县| 怀化市| 徐汇区| 忻州市| 永靖县| 新乡县| 七台河市| 易门县| 乌拉特中旗| 巫溪县|