在Java中,我试图创建一个作为参数传递的类的实例。例如:
public Class<? extends superclass> theClass;
public constructor(Class<? extends superclass> myClass){
this.theClass = myClass;
}
public superclass getInstance(){
return < AN INSTANCE OF theClass >
}
我不知道如何创建theClass
的实例...
这是可能的,还是我需要找到另一种方法呢?
非常感谢任何帮助。
答案 0 :(得分:2)
您可以致电Class#newInstance()
:
public Superclass getInstance() throws InstantiationException, IllegalAccessException {
return theClass.newInstance();
}
来自Javadocs:
创建由此
Class
对象表示的类的新实例。该类实例化为具有空参数列表的new
表达式。如果尚未初始化,则初始化该类。
答案 1 :(得分:2)
是的,有可能:
return this.theClass.newInstance();
java.lang.Class
和java.lang.reflect
中的更多内容,包括查找该类可能具有的其他构造函数的方法以及使用参数调用它们的方法。
例如,假设您知道需要调用接受String
参数的构造函数。您可以使用getConstructor
找到该构造函数:
Constructor ctor = this.theClass.getConstructor(String.class);
...然后调用它
return ctor.newInstance("the string");