【问题标题】:How to check all parts of an Object in Java in a loop如何在循环中检查Java中对象的所有部分
【发布时间】:2020-05-18 02:01:51
【问题描述】:
我想知道是否有一种有效的方法可以一次检查 Java 对象的所有部分,而无需调用每个部分。所以假设我有这个例子:
Example(boolean part1, int part2, boolean part3)
我创建了这个示例对象:
Example(true, 6, false)
我计划制作一个字符串数组,该数组将包含所有这些值,如下所示:
"true", "6", "false"
是否可以创建一个循环来抓取该对象的每个部分?
【问题讨论】:
标签:
java
arrays
loops
object
【解决方案1】:
您可以使用Reflection 获取类的字段并遍历字段数组并调用setAccessible(true) 以允许访问,如果该字段是私有的并获取其值
static class Example {
private boolean part1;
private int part2;
private boolean part3;
public Example(boolean part1, int part2, boolean part3) {
this.part1 = part1;
this.part2 = part2;
this.part3 = part3;
}
}
,主要
public static void main(String[] args) {
Example example = new Example(true, 1, false);
Field[] fields = example.getClass().getDeclaredFields();
List<String> list = new ArrayList<>();
for (Field f : fields) {
f.setAccessible(true);
try {
list.add(String.valueOf(f.get(example)));
} catch (IllegalArgumentException | IllegalAccessException e) {
e.printStackTrace();
}
}
String[] strings = list.toArray(new String[0]);
System.out.println(Arrays.toString(strings));
}
,输出
[true, 1, false]
更多信息:Reflection Oracle doc