我试图创建一个创建类的新对象的方法,但我希望能够创建许多不同类的对象,因此为每个类创建一个方法对我不起作用。有什么办法可以将一个类传递给一个方法,以便可以创建一个新对象?我所有的类都有相同的构造函数。
问问题
6769 次
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 回答