1

Apache BeanUtils setProperty メソッドを使用して、一般的な方法で Excel ファイルからデータをインポートしています。パーサーに「列名」と「プロパティ名」のペアのリストを提供すると、パーサーは「列名」と一致する Excel フィールドの setProperty( ..., "プロパティ名", ...) でプロパティを設定します。 "。うまく機能していますが、問題が発生しています。 addXXX() メソッドで設定されたプロパティがあり、そのクラスを変更できません。このクラスまたはパーサーを変更せずにこのプロパティを設定するにはどうすればよいですか? 出来ますか?DynaClass、PropertyUtils、または MethodUtils でラッパーのようなものを作成して、そのプロパティを設定するときに addXX メソッドを呼び出すことはできますか?

ありがとう!

4

1 に答える 1

0

クラスをラップアラウンドし、ラップされたBeanのaddXXX()に委任するsetXXX()メソッドを提供するデコレータBeanクラスを作成できます。cglibまたはその他のバイトコードインストルメンテーションライブラリを使用して、動的プロキシを介してそれを行うこともできます。

DynaClassの方法を使用したい場合は、開始点としてWrapDynaClassを参照してください。メソッドにカスタムを提供するには、それを拡張する必要がありPropertyDescriptorます。ただし、2つの理由から、これは行いません。まず、addXXX()のセマンティクスはsetXXX()とはかなり異なる可能性があります。次に、DynaClass / DynaBeanの内部API全体が少し面倒ですが、独自のデコレータクラスを作成するのは非常に簡単です。

于 2009-08-25T04:55:34.767 に答える