我试图创建一个创建类的新对象的方法,但我希望能够创建许多不同类的对象,因此为每个类创建一个方法对我来说不起作用。有没有什么方法可以将类传递给方法,以便可以创建新对象?我的所有类都有相同的构造函数。
答案 0 :(得分:6)
您可以使用
public <T> T instanciate(Class<? extends T> clazz) throws Exception {
return clazz.newInstance();
}
并将其称为
MyObject o = instanciate(MyObject.class);
如果你这样做,你想要实例化的类必须有一个没有参数的默认构造函数。否则,您将收到java.lang.InstantiationException
。
答案 1 :(得分:1)
您是否了解过Abstract Factory pattern?
EDITED
顺便说一句,我不认为反射是制作你的架构的好方法,如果你有很多具有相同构造函数的类尝试使用像Factory或Builder这样的有用模式而不是用反射创建一个方法。答案 2 :(得分:0)
您可以在类型名称上使用reflection至switch
并执行您必须执行的操作。
答案 3 :(得分:0)
我相信你正在寻找反思。
答案 4 :(得分:0)
我认为Class.forName可能就是你要找的东西
答案 5 :(得分:0)
package com.loknath.lab;
公共类HasHash {
public static void main(String [] args)抛出异常{
HasHash h = createInstance(HasHash.class); h.display();
} //返回@parameter的Class实例
public static T createInstance(Class className) throws Exception {return className.newInstance(); }
private void display(){System.out.println(&#34; Disply&#34;); }
}