自动设置类中的所有字段(私有)

men*_*ith 1 java

我想知道是否可以将给定类中的所有字段(有一些例外)设置为循环中的某个值.假设我们有一个包含许多字段的类,我们希望不是通过访问器手动填充其值,而是以半自动方式填充.在Java中,有一种方法可以显示给定类中的所有字段.这段代码是这样的:

for (Field field : MyClass.class.getDeclaredFields()) {
    System.out.println(field);
}
Run Code Online (Sandbox Code Playgroud)

还有设置值的方法:

License license = new License();
for (Field field : License.class.getDeclaredFields()) {
   System.out.println(field);
   field.set(license, 99);
}
Run Code Online (Sandbox Code Playgroud)

但是,它失败并出现异常java.lang.IllegalAccessException: can not access a member of class License with modifiers "private.所以我现在想是否可以为给定类中的私有字段设置值.

Mur*_*göz 5

您需要通过呼叫允许访问 field.setAccessible(true);