0

我正在使用 JExcel 插件,我注意到我正在为一组不同的对象编写相同的代码。(示例如下所示)。

loanProfileListSheet.addCell(new label(0,rowNum,loanProfileView.getBorrowersList().getBorrowerPartnerId()));
loanProfileListSheet.addCell(new Label(1,rowNum,loanProfileView.getBorrowersList().getFirstName() + " " +   loanProfileView.getBorrowersList().getLastName()));

现在我想知道是否存在将通用对象传递给实用程序方法的最佳方法,该方法可以为我提供所需的对象(因此,与其编写诸如 loanProfileView.getBorrowersList().getFirstName() 之类的东西,我将拥有一个实用程序像这样

Workbook getWorkBook (List<Object> objectList, List<String> attributes, Hashmap<String, String> attributeHeaders)

这样我就可以传递任何一组对象并获得一个 excel 工作簿

4

1 回答 1

0

您可以将反射与Apache Commons / BeanUtils一起使用来制作通用方法。但是,我通常反对以这种方式使用反射。它有很多缺点,比如在你的 IDE 中重命名字段不能正确重构代码并且查找用法不能很好地工作。这使得其他开发人员(或几个月后的您自己)难以理解代码。

当您看到代码重复时,我建议您让代码更简单。

例如

BorrowersList bl = loanProfileView.getBorrowersList();
WorksheetUtil.createCell(loanProfileListSheet, 0, rowNum, bl.getBorrowerPartnerId());
WorksheetUtil.createCell(loanProfileListSheet, 1, rowNum, bl.getFullName());

您将 getFullName() 定义为

return firstname+" "+lastname;

并且您将 createCell 定义为执行类似操作的 1 行实用程序

loanProfileListSheet.addCell(new Label(colNum,rowNum,param));

如果您真的想走重新选举路线,这里有一篇文章涵盖了您需要的内容:Java Reflection Beans Property API

于 2012-04-25T07:35:26.417 回答