1.class物件的三種獲取方式
@test
public void threemethodforclassobj() throws classnotfoundexception
2.獲取父類class物件
/**
* 獲取父類class物件,由於單一繼承特性,所以只會獲取到乙個class物件
*/@test
public void getsupperclass()
3.獲取實現的介面class物件
/**
* 獲取類實現的所有介面《由於介面可以多實現,所以獲取的介面為乙個陣列
* 只能獲取到當前類實現的介面,不能獲取到父類實現的介面
*/@test
public void getinte***ces()
}
1.常用物件-field
a.獲取field的兩種方式對比
/**
* 根據class物件獲取類的成員變數
* @throws nosuchfieldexception
*/@test
public void getfields() throws nosuchfieldexception
//獲取當前類所有的變數,private、protected、public……以及從父類繼承過來的public型別的變數
field fields2 = clazz.getdeclaredfields();
for (field field : fields2)
//還可以指定變數名獲取類的變數
field idfield = clazz.getfield("id");
log.debug("指定名稱獲取public變數:%s", idfield.getname());
field usernamefield = clazz.getdeclaredfield("username");
log.debug("指定名稱獲取變數:%s", usernamefield.getname());
}
b.遞迴獲取類的所有成員變數,包括父類所有成員變數
@test
public void getallfields()
tempclass = tempclass.getsuperclass();
}setclassnames = map.keyset();
for (string classname : classnames)
}}
c.獲取成員變數的修飾符
/**
* 變數的修飾符是通過int型別的數字表示的
* 常見的數字與修飾符關係如下
* int publiccode = modifier.public;//1
int privatecode = modifier.private;//2
int protectedcode = modifier.protected;//4
int staticcode = modifier.static;//8
*/@test
public void getfieldmodifiers()
}
d.獲取成員變數的資料型別
/**
* 獲取變數的型別之後可以通過判斷變數型別給變數賦值
*/@test
public void getfieldtype()
}
2.常用物件-method
3.常用物件-constructor
Java筆記 反射
反射是通過class的forname方法拿到該類 然後再用這個class物件的newinstance方法得到乙個該類的物件 execlass class.forname string classqualifiedname exeobj execlass.newinstance 接下來就是傳引數的細節...
JAVA反射基礎知識整理
2.1 class類 獲取class物件的三種方式 方式一 通過object類中的getobject 方法 person p new person class c p.getclass 方式二 通過 類名.class 獲取到位元組碼檔案物件 任意資料型別都具備乙個class靜態屬性,看上去要比第一種...
java 反射知識點整理
1.1 class類 獲取class物件的三種方式 方式一 通過object類中的getobject 方法 person p new person class c p.getclass 方式二 通過 類名.class 獲取到位元組碼檔案物件 任意資料型別都具備乙個class靜態屬性,看上去要比第一種...