所有人:
我正在使用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 有谁知道如何解决这个问题? 谢谢