a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 104|回复: 0

[专业语言] JAVA认证:Java反射机制的一点心得

[复制链接]
发表于 2012-8-4 12:44:44 | 显示全部楼层 |阅读模式
我碰着的问题简述如下:3 j! B; C: q) B8 F- w$ L; {
类pa.A封装反射挪用,类pb.B中实现了需要反射的类。pa,pb是分歧的包。当B中反射的类是B自身,或是B的内部类时,可以正常反射。当B中反射的是一个接口类(例如IA)的实现类时,不管是匿名类仍是有名类,均会激发ensureMemAccess错误,即Java认定你没有权限访谒该体例,尽管接口和实现以及体例全数都是public的。0 t; B6 ?9 x; M7 u# {
发生这个问题的原因是跟包访谒的权限有关,当把这两个类都放到统一个包下时,一切正常。0 X' B7 m7 M, R6 N
如不美观为了代码结构必然要放在分歧的包内,同时又要使用反射机制的放在,那么建议铺开访谒权限,体例是当获得了挪用反射类体例的Method对象后,在挪用invoke之前,挪用setAccessible(true)来把权限释铺开。这样反射机制就可以继续正常工作了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-6-4 08:03 , Processed in 0.195246 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表