java实现非法访问异常示例
更新时间:2014年02月27日 15:47:55 作者:
创建ExceptionTest类,在该类的main()方法中,使用反射获得String类的所有域,不要使用setAccessible方法修改这些域的可见性,然后通过反射获得私有域中与”hash”相匹配的int值,并使用try-catch语句块捕获非法访问异常
思路分析:
首先使用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);
}
}
}
}
}
相关文章
SpringBoot打包发布到linux上(centos 7)的步骤
这篇文章主要介绍了SpringBoot打包发布到linux上(centos 7)的步骤,帮助大家更好的理解和使用springboot框架,感兴趣的朋友可以了解下2020-12-12SpringBoot整合Log4j2实现自定义日志打印失效的原因及解决
本文给大家介绍了关于SpringBoot项目整合Log4j2实现自定义日志打印失效原因及解决办法,主要的原因是因为SpringBoot的logback包的存在,文中通过图文给大家了详细解决方法,需要的朋友可以参考下2024-01-01
最新评论