對反射用法的初探

2022-07-22 10:30:27 字數 1455 閱讀 5885

以前看到別人的一小段方法,使用反射來寫的,對反射不是很熟悉,愣是沒看懂,今天有幸再次翻出來看了一下,api的小用法。

此次弄清除2個問題:

1、invoke()方法的作用

2、getmethod(obj,new class);的用法

解答: 自我理解

1、invoke()方法的作用,就是執行物件要呼叫的方法

2、getmethod()方法中第二個引數是乙個class的陣列,用以標識引數型別

詳細測試示例如下:

class<?> c = ref.class;

object o = c.newinstance();

//第乙個實參為方法名,第二個實參為方法引數型別對應的class物件

method namemethod = c.getdeclaredmethod("setname",string.class);

namemethod.invoke(o,"name1");//執行方法

namemethod = c.getdeclaredmethod("getname", null);

string name = (string) namemethod.invoke(o, null);

/**

* @description 測試用例

* @version

1.0 */

public

class

ref

public

void

setname(string name)

public

integer getage()

public

void

setage(integer age)

public

string say(string name,integer age)

public

string say()

}

1

/**2

* @description 反射學習方式3*

@version

1.0 4*/

5public

class

reftest );

14 m.invoke(this, new

object);

15}

1617

18public

static

void main(string args) throws

exception);

29 string say2 = (string)saymethod2.invoke(o, "name2",16);

30system.out.println(say2);

3132}33

34 }

對反射的認知

反射其實是通過class物件來呼叫類裡面的方法 無參無返回,無參有返回,有引數無返回,有引數有返回 或者屬性,反射還可以呼叫私有方法和私有屬性。反射的使用方法 system.out.println 屬性 1.得到你的類的物件 class c class.forname com.zking.entit...

Python 反射的用法

在做程式開發中,我們常常會遇到這樣的需求 需要執行物件裡的某個方法,或需要呼叫物件中的某個變數,但是由於種種原因我們無法確定這個方法或變數是否存在,這是我們需要用乙個特殊的方法或機制要訪問和操作這個未知的方法或變數,這中機制就稱之為反射。接下記錄下反射幾個重要方法 判斷物件中是否有這個方法或變數 c...

關於反射的用法

關於屬性設定方法 propertyinfo properties typeof t getproperties 獲取屬性列表 使用foreach 獲取單個屬性 foreach propertyinfo one in properties descriptionattribute attribute....