Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 自动设置类中的所有字段(专用)_Java - Fatal编程技术网

Java 自动设置类中的所有字段(专用)

Java 自动设置类中的所有字段(专用),java,Java,我想知道是否有可能将给定类中的所有字段(除了一些例外)设置为循环中的某个值。假设我们有一个包含许多字段的类,并且我们希望不是通过访问器手动填充它的值,而是以半自动的方式填充它的值。 在Java中,有一种方法可以显示给定类中的所有字段。本守则规定: for (Field field : MyClass.class.getDeclaredFields()) { System.out.println(field); } 还有一种设置值的方法: License license = new Li

我想知道是否有可能将给定类中的所有字段(除了一些例外)设置为循环中的某个值。假设我们有一个包含许多字段的类,并且我们希望不是通过访问器手动填充它的值,而是以半自动的方式填充它的值。 在Java中,有一种方法可以显示给定类中的所有字段。本守则规定:

for (Field field : MyClass.class.getDeclaredFields()) {
    System.out.println(field);
}
还有一种设置值的方法:

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

但是,它失败了,出现了一个异常
java.lang.IllegalAccessException:无法使用修饰符“private”访问类许可证的成员。因此,我现在想知道是否可以为给定类中的私有字段设置值。

您需要通过调用
field.setAccessible(true)来允许访问;

您需要通过调用
字段来允许访问。setAccessible(true);

我刚刚自己发现了它。我会接受您的回答。@mente如果您自己发现了它,您也可以为自己的问题添加一个答案(鼓励这样做).无论如何,现在我们已经有了这个答案,这已经过时了。我刚刚自己发现了。我会接受你的答案。@minteith如果你自己发现了,你也可以在你自己的问题上添加一个答案(这是鼓励的)。无论如何,现在我们已经有了这个答案。请记住,即使有可能,也不一定意味着这是个好主意。@Kayaman请随时提供一些详细信息。链接到文档就足够了。我不确定这一特定的糟糕编程实践将记录在何处。使用反射访问私有成员是可疑的,如果你必须这样做,你可能不应该自己编写代码,而应该使用一个为你提供功能的库。在这种情况下,我指的是最终功能,即你想这样做的根本原因。记住,即使有可能,也不一定意味着这是一个好主意。@Kayaman请随时提供一些详细信息。链接到文档就足够了。我不确定这种糟糕的编程实践会记录在哪里。使用反射访问私有成员是可疑的,如果必须这样做,您可能不应该自己编写代码,而应该使用为您提供功能的库。在在这个案例中,我谈论的是终端功能,也就是说,您希望这样做的根本原因。