反射操作構造器:
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);
反射通用方法案例:
1public
static
void setvalue(object obj , string fieldname , object value) throws
exception
反射結合配置檔案:
1 properties properties = newproperties();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回車,將游標移動到本行頭...