1

我试图创建一个创建类的新对象的方法,但我希望能够创建许多不同类的对象,因此为每个类创建一个方法对我不起作用。有什么办法可以将一个类传递给一个方法,以便可以创建一个新对象?我所有的类都有相同的构造函数。

4

6 回答 6

8

你可以使用

public <T> T instanciate(Class<? extends T> clazz) throws Exception {
    return clazz.newInstance();
}

并称它为

MyObject o = instanciate(MyObject.class);

如果你这样做,你想要实例化的类必须有一个没有参数的默认构造函数。否则,您将捕获一个java.lang.InstantiationException.

于 2012-06-14T21:12:01.743 回答
1

你读过抽象工厂模式吗?

已编辑

顺便说一句,我认为反射不是构建架构的好方法,如果您有很多具有相同构造函数的类,请尝试使用有用的模式,如 Factory 或 Builder,而不是使用反射创建一种方法。

于 2012-06-14T21:10:29.900 回答
0

您可以对类型名称使用反射switch做您必须做的事情。

于 2012-06-14T21:11:07.347 回答
0

我相信你正在寻找反思。

看看这个问题:什么是反射,它为什么有用?

于 2012-06-14T21:11:30.540 回答
0

我认为Class.forName可能是您正在寻找的

于 2012-06-14T21:11:48.843 回答
0

包 com.loknath.lab;

公共类 HasHash {

公共静态 void main(String[] args) 抛出异常 {

  HasHash h = createInstance(HasHash.class);      
            h.display();

} //返回@parameter类的实例

public static T createInstance(Class className) throws Exception { return className.newInstance(); }

private void display() { System.out.println("Disply"); }

}

于 2014-04-22T08:02:23.507 回答