A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郑彬 中级黑马   /  2012-8-20 14:06  /  2198 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

can not access a member of class java.util.HashMap$HashIterator with modifiers "public final"
这个错误什么意思?Reflection.ensureMemberAccess(caller, clazz, obj, modifiers);这是提示的源码?

8 个回复

倒序浏览
由于没办法看见你完整的异常提醒,但根据can not access a member of class java.util.HashMap$HashIterator with modifiers "public final"
可以看出:出现这种异常,就是因为该类不是公共的。访问位于其他包中的非公共类型的成员是不合法的
回复 使用道具 举报
刘芮铭 发表于 2012-8-20 15:12
由于没办法看见你完整的异常提醒,但根据can not access a member of class java.util.HashMap$HashIterato ...

public final这个不是公共的吗?难道被public final修饰的方法不能被反射访问吗?
回复 使用道具 举报
public final这个不是公共的吗?难道被public final修饰的方法不能被反射访问吗?
回复 使用道具 举报
郑彬 发表于 2012-8-21 17:00
public final这个不是公共的吗?难道被public final修饰的方法不能被反射访问吗? ...


从异常可以看到:can not access a member of class java.util.HashMap$HashIterator with modifiers "public final"
说明运行时的被反射类其实是 java.util.HashMap$HashIterator ,(也可以看出HashSet是通过HashMap来实现的),查看jdk的源码,可以看到:
private abstract class HashIterator<E> implements Iterator<E> {
。。。
}
这个是私有内部类,不允许外边访问。所以报了这个非法访问异常

评分

参与人数 1技术分 +1 收起 理由
张立江 + 1 赞一个!

查看全部评分

回复 使用道具 举报
刘芮铭 发表于 2012-8-21 17:03
从异常可以看到:can not access a member of class java.util.HashMap$HashIterator with modifiers "pu ...

这个跟私有内部类没关系吧,是关于反射调用的啊,为什么不能调用被public final修饰的方法呢?
回复 使用道具 举报
郑彬 中级黑马 2012-8-21 17:24:17
7#
这个跟私有内部类没关系吧,是关于反射调用的啊,为什么不能调用被public final修饰的方法呢?
回复 使用道具 举报
郑彬 发表于 2012-8-21 17:24
这个跟私有内部类没关系吧,是关于反射调用的啊,为什么不能调用被public final修饰的方法呢? ...

综合上述 以及我查询的资料  都是这个原因  我个人认为也是这个原因
回复 使用道具 举报
郑彬 中级黑马 2012-8-22 23:23:56
9#
谁有更详细的解释吗
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马