Java IllegalAccessException

时间:2014-04-24 08:38:33

标签: java illegalaccessexception

我的程序中出现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"

起初,我认为'静态'可能是个问题。

但据我所知,静态方法在调用时会自己构建堆栈帧。

所以我一无所获。

请让我知道我做了什么蠢事〜

我的程序在Spring 3.x和java 1.6上运行

1 个答案:

答案 0 :(得分:0)

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实例的?

可能存在一些问题