浏览 5370 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-02-29
最后修改:2012-02-29
--File Company.java package objs; class Company{ public static String type="huawei"; } --File Test.java package test; class Test{ public static void main(String[] args) throws Exception { ClassLoader classLoader = ClassLoader.getSystemClassLoader(); Class cl=classLoader.loadClass("objs.Company"); System.out.println(cl); Field field=cl.getField("type"); Object tmp=field.get(null); System.out.println(tmp); } } 根据异常栈at java.lang.reflect.Field.doSecurityCheck(Field.java:960) 找到源码: Reflection.ensureMemberAccess(caller, clazz, obj, modifiers); 一开始感到无从入手,后来想到java的包机制,访问级别(public,protected,..,private).平时不用反射,基本 上如果访问不了某对象或其方法,变量,eclipse 直接就提醒了,并且根本不能编译。而反射是要等到运行时才检查某 访问合不合法。现在好多框架都用到反射,如果出现非法访问的异常,这应该是一条解决思路。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |