2.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");
2.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() 獲取所有的構造方法(包含私有的)
2.2.1通過反射方式,獲取構造方法,建立物件
1. 獲取到class物件
2. 獲取指定的構造方法
3. 通過構造方法類constructor中的方法,建立物件
public t newinstance(object... initargs)
2.2.2通過反射方式,獲取私有構造方法,建立物件
獲取私有構造方法,步驟如下:
1. 獲取到class物件
2. 獲取指定的構造方法
3. 暴力訪問, 通過類constructor的setaccessible(boolean flag)方法設定訪問許可權
4. 通過構造方法類constructor中的方法,建立物件
public t newinstance(object... initargs)
2.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() 獲取所有的變數 (包含私有)
2.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 物件表示的成員變數的值
2.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() 獲取本類中所有的方法(包含私有的)
2.4.1通過反射,建立物件,呼叫指定的方法
獲取成員方法,步驟如下:
1. 獲取class物件
2. 獲取構造方法
3. 通過構造方法,建立物件
4. 獲取指定的方法
5. 執行找到的方法:
public object invoke(object obj, object... args)
執行指定物件obj中,當前method物件所代表的方法,方法要傳入的引數通過args指定。
2.4.2通過反射,建立物件,呼叫指定的private 方法
獲取私有成員方法,步驟如下:
1. 獲取class物件
2. 獲取構造方法
3. 通過構造方法,建立物件
4. 獲取指定的方法
5. 開啟暴力訪問
6. 執行找到的方法
public object invoke(object obj, object... args)
執行指定物件obj中,當前method物件所代表的方法,方法要傳入的引數通過args指定。
java基礎知識整理
一。構造方法,構造 塊,靜態 塊,靜態方法的區別 public class hellob extends helloa public hellob static 構造 塊 是給所有的物件進行初始化,也就是說,所有的物件都會呼叫乙個 塊。只要物件一建立。就會呼叫這 個 塊。建構函式 是給與之對應的物件...
Java基礎知識整理2
1.public string trim 乙個字串s通過呼叫方法trim 得到乙個字串物件,該字串物件是s去掉前後空格後的字串 2.public string substring int start,int end 字串物件呼叫該方法獲得乙個當前字串的子串,該子串是從當前字串的start處擷取到en...
Java集合基礎知識整理
長度區別 陣列長度固定,集合長度可變 內容不同 陣列只能是同一型別元素,集合可以儲存不同型別元素 元素的資料型別不同 陣列可以儲存基本型別和引用型別,集合只能儲存引用型別 物件 集合繼承關係圖 是所有collextion集合類的超類,是乙個抽象類 基本功能 public static void ma...