Java反射机制的一点心得

来源:java认证发布时间:2012-11-12 13:12:26java认证视频

  我遇到的问题简述如下:

  类pa.A封装反射调用,类pb.B中实现了需要反射的类。pa,pb是不同的包。当B中反射的类是B自身,或是B的内部类时,可以正常反射。当B中反射的是一个接口类(例如IA)的实现类时,不管是匿名类还是有名类,均会引发ensureMemAccess错误,即Java认定你没有权限访问该方法,尽管接口和实现以及方法全部都是public的。

  产生这个问题的原因是跟包访问的权限有关,当把这两个类都放到同一个包下时,一切正常。

  如果为了代码结构一定要放在不同的包内,同时又要使用反射机制的放在,那么建议放开访问权限,方法是当获得了调用反射类方法的Method对象后,在调用invoke之前,调用setAccessible(true)来把权限释放开。这样反射机制就可以继续正常工作了。

  编辑特别推荐:

  有趣的Java对象序列化缓存问题

  Java反射设置私有属性和获取属性

  Java中调用dll动态库的简洁方法

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答