首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java IllegalAccessException

Java IllegalAccessException
EN

Stack Overflow用户
提问于 2014-04-24 16:38:33
回答 1查看 2.2K关注 0票数 0

我在我的程序中遇到了IllegalAccessException问题

这是我的代码

代码语言:javascript
复制
    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);‘

例外情况如下

代码语言:javascript
复制
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上

EN

回答 1

Stack Overflow用户

发布于 2014-04-25 11:10:29

代码语言:javascript
复制
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实例的?这里面可能会有一些问题

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23263877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档