小编典典

基于参数的类的新实例

java

我正在尝试使函数采用可扩展的多个类之一Foo,并在其Class中返回该对象的新实例,而不是的新实例Foo

我确定这是一个常见问题。有没有好的例子?

我从未使用过一个类作为输入参数,只使用了一个类的成员。根据我的搜索,这应该可行吗?


阅读 185

收藏
2020-11-30

共1个答案

小编典典

您是将Class对象作为参数传递还是作为的子类传递Foo

在这两种情况下,解决方案都几乎相同,您可以在Class对象上使用newInstance方法。

/**
 * Return a new subclass of the Foo class.
 */
public Foo fooFactory(Class<? extends Foo> c)
{
    Foo instance = null;
    try {
        instance = c.newInstance();
    }
    catch (InstantiationException e) {
        // ...
    }
    catch (IllegalAccessException e) {
        // ...
    }
    return instance; // which might be null if exception occurred,
                     // or you might want to throw your own exception
}

如果需要构造函数参数,则可以使用Class
getConstructor方法,然后从那里使用Constructor
newInstance(…)方法。

2020-11-30