1

クラスのすべての文字列インスタンス変数のキーと値のペアを作成する最良の方法は何ですか? そのようなタスクを実行するライブラリは存在しますか?

リフレクションベースの後方参照を使用して同じことをしています。しかし、それは多くの仕事をしているようです。

例えば:

クラスがあります

public class Account implements ManagedEntity {

private String accountNumber;

public Account(String accountNumber) {
    this.accountNumber = accountNumber;
}
}

クラスのインスタンスをAccountblelow のように作成すると、Account ac = new Account("abc");

出力マップは [{"accountNumber", "abc"}] のようになります。

4

2 に答える 2

2

Peter Lawrey がコメントの 1 つで既に指摘しているように、その変換を実行できるライブラリを探している場合、考えられる答えの 1 つはApache Commons BeanUtilsです。

BeanUtilsそのライブラリのクラスを使用できます。

Account account = new Account("abc");
Map accountMap = new HashMap();
BeanUtils.populate(account, accountMap);

または、BeanMap実装を使用するとさらに簡単になります。

Account account = new Account("abc");
Map accountMap = new BeanMap(account);
于 2012-09-03T15:14:33.047 に答える
0

Peter Lawrey とhereで言及されているように、次のようになります

Account ac = new Account("abc");
Map<String, Object> properties = BeanUtils.describe(ac);

String プロパティに制限するには、BeanUtilsBeanインスタンスを使用して、ConvertUtilsBean のサブクラスをコンストラクターに渡します。サブクラスは、クラスがそうでない場合に null を返すlookup メソッドをオーバーライドしますString

于 2012-09-03T15:17:56.493 に答える