2010-12-01 18 views
4

こんにちは: 私たちのアプリケーションでは、テーブルにcolumes:id、name、age、address、emailなどのデータベースからデータを取得しました。オブジェクトのプロパティを動的に追加します

次に、これらのプロパティの一部をクライアントに応じて取得します。

クライアントがID、名前を取得する必要がある場合、ID名を取得します。クライアントがID、名前、年齢を必要とする場合は、ID、名前、年齢を取得します。

ここで、これらのプロパティをラップするクラスを作成します。しかし、どのフィールドが要求されているのか正確には分かりません。

String[] requestPro={"name","id"}; //this field is specified by client 
Map<String, Object> map=new HashMap<String, Object>(); 
Entity en=Entity.newInstance(); 
for(String p:requestPro){ 
    map.put(p, BeanUtils.getProperty(en, p)); 
} 

ここで地図をクラスに置き換えることはできますか?

答えて

2

あなたが正しく理解している場合は、クラスにプロパティを動的に追加することも、クラスの特定のインスタンスにプロパティを動的に追加することもできます。前者は可能である。 Groovyでは、クラスごとにメタクラスオブジェクトがあり、実行時に振る舞いを割り当てることができます。後者はJavaScriptで可能です。ここでは、オブジェクトのプロトタイプとオブジェクト自体に振る舞いを割り当てることができます。しかし、どちらのバージョンもJavaでは可能ではないので、Mapや同様の構造を使用することはJavaで行うことです。

+0

:(ありがとう。 – hguser

+1

これはJavaで行うことができます。http://stackoverflow.com/questions/2215536​​/java-dynamic-properties – HDave

+1

@HDave Funny、その質問に対する2つのトップの回答Pascalの答えはバイトコード操作ライブラリのCGLibでしか動かないので、クラスを即座に変更してクラスローダーを改ざんする準備ができていれば、Javaで行うことができます。 –

関連する問題