反射:就是通過class檔案物件,去使用該檔案中的成員變數,構造方法,成員方法反射的使用:
/* 反射:就是通過class檔案物件,去使用該檔案中的成員變數,構造方法,成員方法。
一:通過反射獲取無參構造方法訪問
二:通過反射獲取有參構造方法訪問*/
//1.獲取位元組碼檔案物件
class aclass
= class.
forname
("com.user");
//2.獲取所有的公共的構造方法
constructor[
] constructors = aclass.
getconstructors()
;獲取所有的的構造方法(包括私有的)
constructor[
] constructors1 = aclass.
getdeclaredconstructors()
;//迴圈輸出
for(constructor constructor : constructors)
//3.獲取單個構造方法
返回的是無參構造方法物件
constructor constructor = aclass.
getconstructor()
;返回的是有參構造方法物件
constructor constructor1 = aclass.
getconstructor
(string.
class
, integer.
class);
//4.通過構造方法建立物件(有參括號加引數)
object object = constructor1.
newinstance
("匡浪",20
);system.out.
println
(object)
;
//獲取位元組碼物件
class aclass
= class.
forname
("com.user");
//獲取所有成為成員變數
field[
] fields = aclass.
getdeclaredfields()
;for
(field field : fields)
//通過構造方法建立物件
constructor constructor = aclass.
getconstructor()
;//獲取構造方法
object user = constructor.
newinstance()
;//建立物件
//修改單個成員變數的值
field field = aclass.
getdeclaredfield
("name");
//獲取單個屬性
field.
setaccessible
(true);
//設定私有變數必須要暴力訪問
field.
set(user,
"匡浪");
//表示把物件user的name屬性賦值
system.out.
println
(user)
;
//1.獲取位元組碼物件
class<
?> aclass = class.
forname
("com.user");
//獲取所有的方法
method[
] methods = aclass.
getmethods()
;//獲取自己的包括父親的公共方法
method[
] methods1 = aclass.
getdeclaredmethods()
;//獲取自己的所有的方法(不包括構造方法,getset方法)
for(method method : methods1)
object user = aclass.
getconstructor()
.newinstance()
;//物件
//獲取單個方法 引數一是方法名,引數2.3.4...是方法引數型別(私有方法要暴力使用)
//method method = aclass.getmethod("show", string.class);
method method = aclass.
getdeclaredmethod
("show"
, string.
class);
method.
setaccessible
(true);
//方法使用,返回方法的返回值 引數一是物件名 引數2.3.4...是方法引數值
object a = method.
invoke
(user,
"匡浪");
system.out.
println
(a);
1.在獲取私有構造方法,私有屬性變數,私有方法時一定要暴力使用2.在獲取私有方法屬性構造方法時,方法裡面帶declared
method.setaccessible(true);
反射 reflection基本使用
反射 reflection class jvm中 用來 管理類的 類 怎樣獲取乙個類的class物件?1 類名.class 2 物件.getclass 3 class.forname 包名.類名 異常 處理 class 物件是單例的 能通過class物件取到該類中的 包 類名 父類 介面 屬性 方法...
反射的基本用法
最近看spring原始碼,突然發現有好多地方都用到了反射,特此來回顧一下 先來建立userinfo基礎類 public class userinfo private userinfo string name,integer age,string shool public userinfo strin...
反射的基本介紹
反射 通過字串的形式匯入模組,通過字串的形式去模組中尋找指定函式 字段 全域性變數等 根據使用者輸入的內容匯入模組 由以下四個內建函式提供 hasattr getattr setattr delattr,改四個函式分別用於對物件內部執行 檢查是否含有某成員 獲取成員 設定成員 刪除成員。classf...