1.1 class類
獲取class物件的三種方式:
方式一:通過object類中的getobject()方法
person p = new person();
class c = p.getclass();
方式二:通過 類名.class 獲取到位元組碼檔案物件(任意資料型別都具備乙個class靜態屬性,看上去要比第一種方式簡單)
class c2 = person.class;
方式三: 通過class類中的方法(將類名作為字串傳遞給class類中的靜態方法forname即可)。
class c3 = class.forname("person");
1.2通過反射獲取構造方法並使用
可通過class類(位元組碼物件)中提供的方法獲取構造方法:
方式一:返回乙個構造方法
no.1(一般獲取) public constructorgetconstructor(class<?>... parametertypes) 獲取public修飾, 指定引數型別所對應的構造方法
no.2(暴力獲取) public constructorgetdeclaredconstructor(class<?>... parametertypes) 獲取指定引數型別所對應的構造方法(包含私有的)
方式二:返回多個構造方法
no.1(一般獲取)public constructor<?> getconstructors() 獲取所有的public 修飾的構造方法
no.2(暴力獲取) public constructor<?> getdeclaredconstructors() 獲取所有的構造方法(包含私有的)
1.2.1通過反射方式,獲取構造方法,建立物件
1. 獲取到class物件
2. 獲取指定的構造方法
3. 通過構造方法類constructor中的方法,建立物件
public t newinstance(object... initargs)
1.2.2通過反射方式,獲取私有構造方法,建立物件
獲取私有構造方法,步驟如下:
1. 獲取到class物件
2. 獲取指定的構造方法
3. 暴力訪問, 通過類constructor的setaccessible(boolean flag)方法設定訪問許可權
4. 通過構造方法類constructor中的方法,建立物件
public t newinstance(object... initargs)
1.3通過反射獲取成員變數並使用
方式一:返回乙個成員變數
no.1(一般獲取) public field getfield(string name) 獲取指定的 public修飾的變數
no.2(暴力獲取) public field getdeclaredfield(string name) 獲取指定的任意變數
方式二:返回多個構造方法
no.1(一般獲取) public field getfields() 獲取所有public 修飾的變數
no.2(暴力獲取) public field getdeclaredfields() 獲取所有的變數 (包含私有)
1.3.1通過反射,建立物件,獲取指定的成員變數,進行賦值與獲取值操作
獲取成員變數,步驟如下:
1. 獲取class物件
2. 獲取構造方法
3. 通過構造方法,建立物件obj
4. 獲取指定的成員變數(私有成員變數,通過setaccessible(boolean flag)方法暴力訪問)
5. 通過類field的方法,給指定物件的指定成員變數賦值或者獲取值
賦值:public void set(object obj, object value)
在指定物件obj中,將此 field 物件表示的成員變數設定為指定的新值
取值:public object get(object obj)
返回指定物件obj中,此 field 物件表示的成員變數的值
1.4通過反射獲取成員方法並使用
引數1: name 要查詢的方法名稱; 引數2: parametertypes 該方法的引數型別
方式一:返回乙個方法
獲取public 修飾的方法:
public method getmethod(string name, class<?>... parametertypes)
獲取任意的方法,包含私有的:
public method getdeclaredmethod(string name, class<?>... parametertypes)
方式二:返回多個構造方法
public method getmethods() 獲取本類與父類中所有public 修飾的方法
public method getdeclaredmethods() 獲取本類中所有的方法(包含私有的)
1.4.1通過反射,建立物件,呼叫指定的方法
獲取成員方法,步驟如下:
1. 獲取class物件
2. 獲取構造方法
3. 通過構造方法,建立物件
4. 獲取指定的方法
5. 執行找到的方法:
public object invoke(object obj, object... args)
執行指定物件obj中,當前method物件所代表的方法,方法要傳入的引數通過args指定。
1.4.2通過反射,建立物件,呼叫指定的private 方法
獲取私有成員方法,步驟如下:
1. 獲取class物件
2. 獲取構造方法
3. 通過構造方法,建立物件
4. 獲取指定的方法
5. 開啟暴力訪問
6. 執行找到的方法
public object invoke(object obj, object... args)
執行指定物件obj中,當前method物件所代表的方法,方法要傳入的引數通過args指定。
知識點整理
一 標準庫容器和演算法 1.順序容器 與前面類似 2.關聯容器 map和multimap 元素包含key 鍵 和值 value 兩部分 按照鍵對元素排序 map不允許重複元素出現,但multimap可以 set和multliset 是包含已排序物件的關聯容器 只是單純的鍵的集合 set不允許重複鍵出...
知識點整理
一 標準庫容器和演算法 1.順序容器 與前面類似 2.關聯容器 map和multimap 元素包含key 鍵 和值 value 兩部分 按照鍵對元素排序 map不允許重複元素出現,但multimap可以 set和multliset 是包含已排序物件的關聯容器 只是單純的鍵的集合 set不允許重複鍵出...
知識點整理
一 狀態控制碼 code,control flag 標誌位欄位 u a p r s f 佔6位元。各 位元的含義如下 ack 確認位元 acknowledge 只有當ack 1時確認號字段才有效,代表這個封包為確認封包。當ack 0時,確認號無效。psh push function 若為1時,代表要...