思路分析:
首先使用Class獲得一個代表String類的類對象,然後使用Class類的getDeclaredFields()方法獲得所有成員變量,並賦值給一個Field型數組,即得到String類的所有域。
使用foreach()循環遍歷所有域,使用Field類的getName()方法獲得該成員變量的名稱,如果域的名字是hash,嘗試使用Field類的getInt(Object obj)方法獲得指定對象中類型為int的該成員變量的值。
依次捕獲IllegalArgumentException異常和IllegalAccessException異常。
代碼如下:
代碼如下:
import java.lang.reflect.Field;
public class ExceptionTest {
public static void main(String[] args) {
Class<?> clazz = String.class; //獲得代表String類的類對象
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) { //遍歷所有域
System.out.println(field);
if (field.getName().equals("hash")) { //如果域的名字是hash
try {
System.out.println(field.getInt("hash")); // 輸出hash的值
} catch (IllegalArgumentException e) { //捕獲IllegalArgumentException異常
System.out.println(e);
} catch (IllegalAccessException e) { //捕獲IllegalAccessException異常
System.out.println(e);
}
}
}
}
}