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() のようなものを記述する代わりに、utilそのような

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行のutilとして定義します

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

本当にリフレクションルートをたどりたいのであれば、ここにあなたが必要とするものをカバーする投稿があります:Java Reflection Beans Property API

于 2012-04-25T07:35:26.417 に答える