【问题标题】: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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 2022-01-12
    • 2017-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多