java - 如何循环调用一个类的所有getter方法?

标签 java spring object reflection getter-setter

我有一个对象列表,我想从列表中的项目创建一个 Excel 文件,但不想一一指定所有列。我想在循环中获取对象的所有属性并将其放入 Excel。

for (CustomerDTO customerDto : customerDtoList) {
            Row row = sheet.createRow(rowNumber++);
            row.createCell(0).setCellValue(customerDto.getName());
            row.createCell(1).setCellValue(customerDto.getSurname());
            row.createCell(2).setCellValue(customerDto.getAddress());
            row.createCell(3).setCellValue(customerDto.isActive() ? "Enabled" : "Disabled");
        }

正如你在代码中看到的,我只得到 4 列,但我想获取所有属性,但不一一硬编码所有代码...

类似于:

int index = 0
for (CustomerDTO customerDto : customerDtoList) {
index++;
row.createCell(index).setCellValue(customerDto.GETTERBLABLA);
}

我检查了“反射”,但无法得到确切的解决方案。如何在循环中调用所有 getter?

最佳答案

您可以通过这种方式访问​​类的声明方法:

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class Other {

    public static void main(String [] args) {

        Person p = new Person("Max", 12);
        Class<?> c = p.getClass();
        Method[] allMethods = c.getDeclaredMethods();

        System.out.print( "Person's attributes: ");
        for (Method m : allMethods) {
            m.setAccessible(true);
            String result;
            try {
                result = m.invoke(p).toString();
                System.out.print(result + " ");
            } catch (IllegalAccessException | InvocationTargetException e) {
                e.printStackTrace();
             }

        }
    }
}

class Person {
    String name;
    int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

 }```

关于java - 如何循环调用一个类的所有getter方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60496409/

相关文章:

java - Java 和 C 之间的远程过程调用

java - 如何打开 zip 文件并遍历 Android 上的每个压缩文件?

java - 使用json在c++和java之间交换对象

java - 如何从不同的属性文件中为 Bean 列表配置 Spring 配置?

java - 设置和获取方法未按计划工作

java - 在 Java 中登录时如何避免创建未使用的 String 实例

spring - Web 响应式(Reactive)编程 - 从 HTTP 客户端的角度来看有什么优势?

class - PYGAME - 使一个对象旋转到自动生成的对象

javascript - 如何有效地比较具有不同键但可能匹配值的2个对象?

javascript - 是否有可能从多个条件中返回任何一个为真的条件(以一种简单的方式)?