關於反射機制的一些示例

2021-08-03 15:55:40 字數 1796 閱讀 3935

通過乙個物件獲得乙個完整的包名和類名

package com.ntqingniao.reflect;

public

class client2

}class demo2

例項化class類物件

package com.ntqingniao.reflect;

public

class client3

}class demo3

通過class例項化其他類的物件

package com.ntqingniao.reflect;

public

class

client4

}class person

public

void

setname(string name)

public

intgetage()

public

void

setage(int age)

@override

public string tostring()

}

*如果把person類中的無參建構函式取消,就會出現錯誤。

所以在編寫使用class例項化其他類物件的時候,一定要定義乙個無參的構造器。*

通過class呼叫類中的構造器

// 獲取該類的所有構造器物件

constructor<?> cons = demo.getconstructors();

// 通過構造器物件的newinstance(object.. params)可變引數方法構建物件

person per1 = (person)cons[0].newinstance();

person per2 = (person)cons[1].newinstance("tom", 20);

system.out

.println(per1);

system.out

.println(per2);

返回乙個類實現的介面和繼承的父類

// 獲取類的所有介面和直接父類方法

class

<?> inters = demo.getinte***ces();

class

<?> supers = demo.getsuperclass();

獲取類的全部屬性

// 獲取類的全部屬性

field fields = demo.getdeclaredfields();

for (int i =0; i < fields.length; i++)

呼叫類的方法

method method = demo.getmethod("getname");

method.invoke(demo.newinstance());

person p = new person();

method method2 = demo.getmethod("getname", string.class);

method2.invoke(p, "reflect");

p.getname("reflect");

關於反射一些總結

1.建立實體 person如下類 view code public class person displayattribute description 年齡 public int age displayattribute description 返回方法 public string getval p...

關於反射的一些總結

關於反射的一些總結 1 load,loadfrom和loadfile load 只載入本地程式集中指定的類 通過命名空間等方式指定 loadfrom 通過外部相對或者絕對路徑載入指定的類庫或者exe等檔案,且重複載入相同程式集僅第一次有效 如果該程式集引用其它程式集,會被自動載入。loadfile ...

關於Java反射的一些事

乙個類中,private的屬性或方法,如何對這些屬性進行讀寫操作或方法進行呼叫呢,答案就是反射。最近在寫單元測試用例時,發現通過反射來測試一些private的方法或設定private的屬性非常實用。先看定義乙個類,其中有乙個private的屬性和乙個private的方法,並且建構函式也是乙個priv...