我在我的程序中遇到了IllegalAccessException问题
这是我的代码
private static void setdata(Field field, Object dto, Object value) throws IllegalArgumentException, IllegalAccessException {
boolean accessible = field.isAccessible();
if (!accessible)
field.setAccessible(true);
if (value instanceof java.lang.String) {
if (value != null) {
value = String.valueOf(value).trim();
}
}
field.set(dto, value);
if (accessible)
field.setAccessible(false);
}为了防止'IllegalAccessException‘,我添加了检查逻辑。
boolean accessible = field.isAccessible();' if (!accessible) field.setAccessible(true);
但有时在我的程序中会发生IllegalAccessException。
在行上引发的异常- 'field.set(dto,value);‘
例外情况如下
java.lang.IllegalAccessException: Class com.comm.util.FileReadUtils can not access a member of class com.dto.myDto with modifiers "private"首先,我认为“静态”可能是问题所在。
但据我所知,静态方法在被调用时确实会生成自己的堆栈框架。
所以我一无所获。
请让我知道我做了什么傻事~
我的程序运行在Spring3.x和Java1.6上
发布于 2014-04-25 11:10:29
public static void setField(Object object, String fieldName, Object fieldValue)
{
try
{
Field field = object.getClass().getDeclaredField(fieldName);
field.setAccessible(true);
field.set(object, fieldValue);
}
catch(Exception exception)
{
// Log error
}
}请尝试上面的代码,它应该可以工作(这不是我编译的,如果有语法错误,请检查语法错误)你是如何获得Field实例的?这里面可能会有一些问题
https://stackoverflow.com/questions/23263877
复制相似问题