我正在使用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工作簿
答案 0 :(得分:0)
您可以使用Apache Commons / BeanUtils的反射来制作通用方法。但是,我一般反对以这种方式使用反射。它有许多缺点,比如在IDE中重命名字段IDE不能正确地重构代码并且查找用法不能很好地工作。这使得开发人员(或几个月后自己)难以理解代码。
我建议你在看到重复的代码时简单地使代码更简单。
E.g。
BorrowersList bl = loanProfileView.getBorrowersList();
WorksheetUtil.createCell(loanProfileListSheet, 0, rowNum, bl.getBorrowerPartnerId());
WorksheetUtil.createCell(loanProfileListSheet, 1, rowNum, bl.getFullName());
将getFullName()定义为
return firstname+" "+lastname;
并将createCell定义为1行util,它可以执行类似这样的操作
loanProfileListSheet.addCell(new Label(colNum,rowNum,param));
如果你真的想沿着选举路线走下去,这是一篇涵盖你需要的帖子:Java Reflection Beans Property API