通过反射设置Java类字段时发生IllegalArgumentException

时间:2019-02-21 00:48:46

标签: java reflection

所有人:

我正在使用Java反射来设置字段的值,但会收到IllegalArgumentException

我找到了一个Oracle教程https://docs.oracle.com/javase/tutorial/reflect/member/fieldTrouble.html 这与我的情况非常相似。

但是即使我按照示例使用

f.set(ft, new Integer(43));

它仍然失败,但有相同的异常。

有问题的更新代码是:

import java.lang.reflect.Field;

public class FieldTrouble {
  public Integer val;

  public static void main(String... args) {
    FieldTrouble ft = new FieldTrouble();
    try {
      Class<?> c = ft.getClass();
      Field f = c.getDeclaredField("val");
      f.setInt(ft, new Integer(43));               // IllegalArgumentException

      // production code should handle these exceptions more gracefully
    } catch (NoSuchFieldException x) {
      x.printStackTrace();
    } catch (IllegalAccessException x) {
      x.printStackTrace();
    }
  }
}

我使用Java 1.8 有谁知道如何解决这个问题? 谢谢

0 个答案:

没有答案