通过反射修改基元数据类型



我目前正在研究反射(独立),我正在使用Field类,我已经找到了如何获得声明变量的名称和值;但是,我希望通过我正在实例化的Field对象来修改变量。这是我的代码:

public void handleOutput() {
    try {
        Field f = getClass().getDeclaredField("test");
        f.setInt(int.class, 1);
        System.out.println(f.getName()+": "+f.get(this));
        System.out.println("test: "+test);
    } catch (IllegalAccessException | NoSuchFieldException e) {
        e.printStackTrace();
    }
}

通过这种方法,尽管抛出了一个IllegalArgumentException:

Exception in thread "main" java.lang.IllegalArgumentException: Can not set int f

字段Main.test到java.lang.Class在sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(未知来源)在sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(未知来源)在sun.reflect.UnsafeFieldAccessorImpl.ensureObj(未知源)在sun.reflect.UnsafeIntegerFieldAccessorImpl.setInt(未知源)位于java.lang.reflect.Field.setInt(未知源)在Main.handleOutput(Main.java:13)在Main.Main(Main.java:28)按任意键继续。

如何使用声明的字段修改基元int数据类型测试的值?

看起来你指的是

f.setInt(this, 1);

相关内容

  • 没有找到相关文章

最新更新