2012-04-04 11 views
1

ハッシュマップに値としてクラスを渡そうとしています。私は特定のキーを使用してクラス(値)を取得し、取得されたクラスのオブジェクトをインスタンス化する必要があります。オブジェクトを作成するには、パラメータを渡す必要があります。クラスをHashmapに渡し、キーを使用して値を取得する方法

私の流れは、キー値を渡す別のクラスからgetExpoメソッドを呼び出すときです。キーの値を使用して、私は正しいクラスを取得し、そのクラスを使用してオブジェクトをインスタンス化する必要があり、オブジェクトを返す必要があります。 Inorderオブジェクトを作成するには、クラスにデフォルトコンストラクタがないので引数を渡す必要があります。

この手順の目的は、将来的にですが、私は別のキー、ペア値を追加する必要があり、私はすべての変更を行うべきではない........実装では、すべてのクラスに同じであるオブジェクト

を作成すなわち

私のクラスには、(

Class aClass = hmap.get(key); 
Constructor constructor = aClass.getConstructor(new Class[]{String.class}); 
return (Predicate) constructor.newInstance(expression); 

答えて

3

ここ

public class ExampleFactory { 

    static { 
     HashMap<String,Class<?>> hmap = new HashMap<String,Class<?>>(); 

     hmap.put("jxpath", JXPathExpression.class); 
     hmap.put("spel", SpelExpression.class); 
    } 

    public Predicate getExpo(String key,String expression) { 

     // Need to get the class using key value and instantiate the object for the class 
     // but i need to pass parameters in order to create the object.something like this 

     //JXPathExpression object = new JXPathExpression(expression); 
     return null; 
    } 
} 
を行きますキー);私は静的ブロックでハッシュマップを実装しているので、hmapでエラーが発生しています。アクセスできません。
+0

私はgetEcho方法でそれを実装する場合.......ご返信いただきありがとうございます....クラスAClassは= hmap.getを試してみてください – Jessie

+0

私は別の助けが必要です.......いくつかのクラスのために、私は2つの引数を渡す必要があります:(文字列、クラスタイプ)例:(式、Boolean.class)、それを実装する方法?どのコンストラクタをどのように実行するかを選択する方法... 1つのクラスには1つの引数だけが文字列で.......別のクラスには2つの引数がありますStringとクラス Jessie

+1

http://java.sun.com/developer/technicalArticles/ ALT /反射/ – Luca

関連する問題