反射 反射機制的深入研究

2021-08-07 22:10:41 字數 2123 閱讀 9643

一,本章目標

使用反射呼叫類中的指定方法

使用反射完成setter和getter方法的呼叫

使用反射直接操作類中的屬性

使用反射運算元組

二,具體內容

2.1通過反射呼叫類中的方法

正常情況下,乙個類的物件產生後就可以直接呼叫類的方法。如果想呼叫的話,則肯定必須清楚地知道要呼叫的方法名字是什麼,之後通過class類中的

public method getmethod()   方法得到乙個方法的mmethod物件,之後通過此method物件執行方法,但是在方法呼叫的手會牽扯到引數問題,所以使用getmethod方法的時候必須指定好引數。

例項操作:呼叫person類中的saychina方法(使用method類中的invoke方法可以執行方法)

如果方法中存在引數,則必須設定引數型別。

2.2 呼叫setter和getter

setter和getter方法是乙個標準的屬性訪問方法,如果乙個類的屬性被封裝,則必須通過setter和getter方法來設定和獲取,實際上此方法之所以被這樣規定,主要是因為由於反射機制可以給予支援,通過反射呼叫setter和getter。

2.3  操作屬性

操作乙個類,可以通過field類來操作。

public field getfield()  - -----------》得到公共屬性

public field getdeclarefield  --------------->得到本類屬性

public object get()  -----------》取得屬性

public object set() --------------》設定屬性內容

在訪問私有化屬性的時候,必須設定這個屬性可見

public void setaccessible(boolean flag)throws securityexception

將其內容設定為true。

以上的操作不需要setter和getter方法製成,即使沒有這兩個方法, 也能完成功能。

2.3通過反射運算元組

反射機制不光可以使用在類上,也可以使用在任意的引用資料型別上。

class類中存在乙個方法:public class> getcomponenttype()    返回乙個陣列

public static object get(object array,int index)             得到陣列指定下標的內容

public static void set(object arrya,int index)                      修改指定下標的內容

public static object newinstance(class> componetntyep,int . . . dimensions)                 開闢新陣列

操作例項:

取得陣列資訊並修改陣列內容:

使用array可以修改陣列的大小。修改實際上是建立,建立乙個新的陣列,把久的內容拷貝到新陣列中。

三,總結

重點理解set和get方法的呼叫問題,原理

不建議直接使用反射修改屬性

反射機制的深入應用

1 通過反射呼叫類中的方法 呼叫無引數方法 1 public class instancedemo catch exception e 9try catch exception e 1516 17 呼叫有引數方法 1 public class instancedemo catch exception...

flex Bindable深入研究

bindable 元資料標籤,它在 中的作用就是向編譯器提供如何編譯程式的資訊。它的最大作用是使程式元件間的資料同步變得容易。在開發中通常用上bindable作用在檢視控制項上,如給它繫結乙個物件,則以後只需要在邏輯層更改這個物件的值,則檢視層的控制項資料會自動更新 同步 而不再需要手動去更新檢視。...

URLRequest深入研究

urlrequest 的乙個例項 html view plain copy create the request.所構建的nsurlrequest具有乙個依賴於快取響應的特定策略,cachepolicy取得策略,timeoutinterval取得超時值 nsurlrequest therequest...