1

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

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

この手順の目的は将来です。別のキー、ペア値を追加する必要があります。変更を加えないでください........実装はすべてのクラスで同じです。つまり、オブジェクトを作成します。

私のクラスはここに行きます

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;
    }
}
4

1 に答える 1

3

試す

Class aClass = hmap.get(key);
Constructor constructor = aClass.getConstructor(new Class[]{String.class});
return (Predicate) constructor.newInstance(expression);
于 2012-04-04T17:40:47.087 に答える