创建ExceptionTest类,在该类的main()方法中,使用反射获得String类的所有域,不要使用setAccessible方法修改这些域的可见性,然后通过反射获得私有域中与”hash”相匹配的int值,并使用try-catch语句块捕获非法访问异常。
思路分析:
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 |
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); } } } } } |
效果如图:
原文:http://www.cnblogs.com/cysolo/p/3570191.html