Java中反射學習系列教程四-常用API方法(二)
凱哥java 凱哥java
本文是《Java中反射學習系列教程》中的第四篇文章。本文我們接着之前的講解。
先來看看今天學習主要內容:
1:獲取實例化對象的所有屬性
2:獲取實例化對象的所有方法
4.2.6 獲取對象中屬性
我們知道對象中的屬性根據權限不同可以使用不同修飾符來修飾。這裏我們就來研究public和private修飾的屬性獲取。
GetFields:獲取所有public屬性
GetDeclaredFields:獲取所有屬性。包含private的
Demo示例代碼:
/**
* 獲取屬性
* 1:pubic屬性獲取
* 2:所有屬性獲取
*/
@Test
public void getFieldTest() throws Exception{
Class<?> clazz1 = Class.forName("com.kaigejava.domain.Student");
//1:獲取public的單個屬性
Field addrField = clazz1.getField("addr");
log.info("獲取public addr..");
//獲取所有公開的屬性
Field[] publicFieldS = clazz1.getFields();
for(int x = 0;x < publicFieldS.length;x++){
Field field = publicFieldS[x];
log.info("獲取到所有pulibc的屬性.當前獲取第:{}個。屬性名稱爲:{}",x,field.getName());
}
//獲取單個屬性(private)
Field privateSchooleName = clazz1.getDeclaredField("schoolName");
//獲取所有屬性 包含public private的
Field [] allField = clazz1.getDeclaredFields();
for(int x = 0;x < allField.length;x++){
Field field = allField[x];
log.info("獲取到所有的屬性.當前獲取第:{}個。屬性名稱爲:{}",x,field.getName());
}
}
查看student的屬性:
運行結果:
4.2.7 獲取對象中方法
方法和屬性類似。都分爲public和private的。所以:
獲取public方法是:getMethod
獲取所有方法(包含private的):getDeclaredMethod
這裏咱們就只演示獲取單個public方法:
Demo演示代碼:
/**
* 獲取方法
* @throws Exception
*/
@Test
public void getMethodTest()throws Exception{
Class<?> clazz1 = Class.forName("com.kaigejava.domain.Student");
Class<?> methodParams[] = new Class[]{String.class};
Method publicSetRealName = clazz1.getMethod("setRealName",methodParams);
log.info("方法名稱爲:{},方法參數爲:{}",publicSetRealName.getName(),publicSetRealName.getGenericParameterTypes());
}
運行結果:
今日總結:
溫馨提示:本文是系列教程中的一篇文章。