通過乙個物件獲得乙個完整的包名和類名
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...