1

我正在尝试将类作为哈希图中的值传递。我需要使用特定的键获取类(值)并为检索到的类实例化一个对象。但为了创建对象,我需要传递参数。

当我从另一个传递键值的类调用 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 回答