Java中反射學習系列教程四-常用API方法(二)

Java中反射學習系列教程四-常用API方法(二)

凱哥java 凱哥java
本文是《Java中反射學習系列教程》中的第四篇文章。本文我們接着之前的講解。

先來看看今天學習主要內容:

1:獲取實例化對象的所有屬性

2:獲取實例化對象的所有方法

Java中反射學習系列教程四-常用API方法(二)
4.2.6 獲取對象中屬性

我們知道對象中的屬性根據權限不同可以使用不同修飾符來修飾。這裏我們就來研究public和private修飾的屬性獲取。

GetFields:獲取所有public屬性

GetDeclaredFields:獲取所有屬性。包含private的

Java中反射學習系列教程四-常用API方法(二)
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());
}
}

Java中反射學習系列教程四-常用API方法(二)
查看student的屬性:

Java中反射學習系列教程四-常用API方法(二)
運行結果:

Java中反射學習系列教程四-常用API方法(二)
4.2.7 獲取對象中方法

方法和屬性類似。都分爲public和private的。所以:

獲取public方法是:getMethod

獲取所有方法(包含private的):getDeclaredMethod
Java中反射學習系列教程四-常用API方法(二)

這裏咱們就只演示獲取單個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());
}

Java中反射學習系列教程四-常用API方法(二)

運行結果:
Java中反射學習系列教程四-常用API方法(二)

今日總結:
Java中反射學習系列教程四-常用API方法(二)

溫馨提示:本文是系列教程中的一篇文章。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章