java.lang.IllegalAccessException:与类的public/private属性有关吗?

ane*_*yzm 3 java exception

我的Java代码中出现以下错误:

java.lang.IllegalAccessException: Class org.apache.commons.digester.ObjectCreateRule can not access a member of class Response with modifiers ""
Run Code Online (Sandbox Code Playgroud)

可能是因为课程响应不是公共课吗?如果是这样,我怎样才能使它可访问并将类Response保存在与主类相同的文件中?

谢谢

更新,代码:http://www.smipple.net/snippet/aneuryzma/on :% 20is%20related% 20to%20public%20/% 20private%20attribute%20for%20classes%20%3F

Ale*_*exR 8

据我记得你的类响应应遵循bean约定:应该是public,应该有公共默认构造函数,并且应该有你从xml引用的所有字段的setter和getter.


Joo*_*kka 5

是的,正如IllegalAccessException 文档所说。

您可以通过反射绕过访问修饰符。例如,要访问私有字段,使用Class.getDeclaredField(String)获取特定的Field(也适用于私有字段 - 使用普通getField只能获取公共成员),然后设置Field.setAccessible(true). 现在可以像公开一样使用该字段。

您还可以使用JNI绕过访问修饰符。它根本不关心访问修饰符。还有一种方法是使用诸如ASM 之类的工具生成自定义字节码。