2012-04-24 76 views
0

我正在使用JExcel插件,我注意到我正在爲一組不同的對象編寫相同的代碼。 (示例如下所示)。是否有引用java對象屬性的最佳方式?

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

您可以使用反射與Apache Commons/BeanUtils做一個通用的方法。但是,我通常反對使用反思的方式。它存在很多缺陷,比如重命名字段。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線使用率,做這樣的

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

的東西,如果你真的想往下走選舉路線,這裏是一個涵蓋你需要的職位:Java Reflection Beans Property API

相關問題