@test
void
contextloads1()
throws exception
//反射獲取類中的方法
method[
] declaredmethods = userclass.
getdeclaredmethods()
;for
(method declaredmethod : declaredmethods)
//反射獲取類中的構造方法
constructor<
?>
declaredconstructors = userclass.
getdeclaredconstructors()
;for
(constructor<
?> declaredconstructor : declaredconstructors)
//獲取其他資訊
package apackage = userclass.
getpackage()
; string ******name = userclass.
get******name()
; system.out.
println
(apackage+
":"+******name)
;//建立物件
user user =
(user) userclass.
newinstance()
; system.out.
println
(user)
;//指定構造建立
constructor
declaredconstructor = userclass.
getdeclaredconstructor
(integer.
class
, string.
class);
//生成物件
user user1 = declaredconstructor.
newinstance(1
,"張三");
system.out.
println
(user1)
;//給屬性賦值
//獲得指定的屬性
field name = userclass.
getdeclaredfield
("name");
//private修飾的屬性是不可訪問的,反射是可以訪問的,需要我們新增設定
name.
setaccessible
(true);
name.
set(user1,
"李四");
system.out.
println
(user1)
;//可以執行的方法
//獲取需要執行的方法
method getname = userclass.
getdeclaredmethod
("getname");
string namevalue =
(string)getname.
invoke
(user1)
; system.out.
println
(namevalue)
; method setname = userclass.
getdeclaredmethod
("setname"
, string.
class);
setname.
invoke
(user1,
"劉浩");
system.out.
println
(user1.
getname()
);}}
反射 獲取class檔案物件的三種方式
package cn.itcast 01 反射 就是通過class檔案物件,去使用該檔案中的成員變數,構造方法,成員方法。person p new person p.使用 要想這樣使用,首先你必須得到class檔案物件,其實也就是得到class類的物件。class類 成員變數 field 構造方法 ...
反射機制獲取Class物件的三種方式
person person new person 1 通過object類的getclass 方法 需要先例項化乙個物件 class clazz1 person.getclass 2 通過物件例項方法獲取物件 需要先例項化乙個物件 class clazz2 person.class 3 類的全路徑 不...
反射機制 獲取Class物件的三種方式
條條大路通羅馬 殊途同歸 任何物件的建立都依賴於位元組碼,反射必要獲取位元組碼物件 是最為熟悉的object類中的getclass 方法,能夠完成自己所屬的位元組碼物件的獲取。人所共知 使用該方式,必要明確具體的類,並建立物件!該方式示例 public void test 是通過靜態屬性.class...