Day52 反射回顧

2022-09-03 16:06:13 字數 3506 閱讀 2637

反射操作構造器:

1 class<?> clazz = class.forname("com.reflex.bean.user");

2 constructor<?> c1 =clazz.getconstructor();

3 object obj1 =c1.newinstance();

4 system.out.println(obj1);

1 class<?> clazz = class.forname("com.reflex.bean.user");    

2 constructor<?> c3 = clazz.getdeclaredconstructor(string.class, string.class

);3 c3.setaccessible(true

);4 object obj3 = c3.newinstance("張三", "20000101");

5 system.out.println(obj3);

反射操作成員變數:

1 classclazz = user.class

;2 user user =clazz.newinstance();

3 field idfield = clazz.getfield("id");4//

設定成員變數

5 idfield.set(user,250);

6system.out.println(user);7//

獲取成員變數

8 object idvalue =idfield.get(user);

9 system.out.println(idvalue);

1 classclazz = user.class

;2 user user =clazz.newinstance();

3 field usernamefield = clazz.getdeclaredfield("username");4//

暴力反射

5 usernamefield.setaccessible(true);6

//設定成員變數

7 usernamefield.set(user,"李四");8//

獲取成員變數

9 object usernamevalue =usernamefield.get(user);

10 system.out.println(usernamevalue);

反射操作成員方法:

1 classclazz = user.class

;2 user user =clazz.newinstance();3//

獲取public修飾的成員方法

4 method method01 = clazz.getmethod("setpassword", string.class);5

//使用方法物件6//

obj:哪個物件在執行該方法7//

args:方法執行時所需的引數值

8 method01.invoke(user,"123456");

1 method method02 = clazz.getdeclaredmethod("show");

2 method02.setaccessible(true

);3 object result =method02.invoke(user);

4 system.out.println(result);

反射越過泛型檢查:

1 listlist = new arraylist();

2 list.add(1);

3 list.add(2);

4 list.add(3);

5system.out.println(list);6//

反射操作list的add方法

7 class<? extends list> clazz =list.getclass();

8 method add = clazz.getdeclaredmethod("add", object.class

);9 add.setaccessible(true

);10 object result = add.invoke(list, "hello , generic type !");

11 system.out.println(list);

反射通用方法案例:

1 

public

static

void setvalue(object obj , string fieldname , object value) throws

exception

反射結合配置檔案:

1 properties properties = new

properties();2//

將bean.properties中的資料儲存到inputstream中

3 inputstream inputstream = demo11.class.getclassloader().getresourceasstream("bean.properties");4//

將bean.properties中的資料繫結到了properties中!

5properties.load(inputstream);6//

獲取全類名

7 string classname = properties.getproperty("bean01");8//

根據上述全類名建立了乙個物件!

9 object obj =class.forname(classname).newinstance();

10system.out.println(obj);

11//

根據上述全類名建立了乙個物件!

12 string classname2 = properties.getproperty("bean02");

13 object obj2 =class.forname(classname2).newinstance();

14 system.out.println(obj2);

靜態**設計模式:

1

//1、自定義乙個**類(增強類)實現和被**類(被增強類)相同的介面

2public

class userdaoimplproxy implements

userdao

9@override

10public

void

adduser()

1617

@override

18public

void

deleteuser()

21@override

22public

void

updateuser()

25@override

26public

void

selectuser()

29 }

java反射回顧《三》

method method demo.getmethod say string.class method.invoke demo.newinstance 名字 執行結果 hello 名字,my name is null nullmethod method demo.getmethod get age...

C 反射回顧筆記

反射提供描述程式集 模組和型別的物件 type 型別 可以使用反射動態地建立型別的例項,將型別繫結到現有物件,或從現有物件中獲取型別,然後呼叫其方法或訪問其字段和屬性。如果 中使用了特性,可以利用反射來訪問它們。反射在以下情況下很有用 type 表示型別宣告 類型別 介面型別 陣列型別 值型別 列舉...

python學習筆記 day5(2)

變數 頭下標 尾下標 下標以 0 為開始,1為末尾開始值 字串擷取操作見day2 轉義字元 描述 在行尾時 續行符,將下一行的內容拼接到當前行的尾部 反斜槓符號 單引號 雙引號 a響鈴 b退格 000空 n 換行 v 縱向製表符,將游標移動到下一行的當前位置 t橫向製表符 r回車,將游標移動到本行頭...