我正在寻找一个问题:Instantiate a class from its string name,它描述了如何在拥有一个类的名称时实例化它。有没有办法在Java中做到这一点?我将拥有包名和类名,并且我需要能够创建具有该特定名称的对象。
发布于 2012-03-27 17:01:22
MyClass myInstance = (MyClass) Class.forName("MyClass").newInstance();
发布于 2015-01-01 02:27:37
为了使获取类的完全限定名以便使用Class.forName(...)
创建实例变得更容易,可以使用Class.getName()
方法。类似于:
class ObjectMaker {
// Constructor, fields, initialization, etc...
public Object makeObject(Class<?> clazz) {
Object o = null;
try {
o = Class.forName(clazz.getName()).newInstance();
} catch (ClassNotFoundException e) {
// There may be other exceptions to throw here,
// but I'm writing this from memory.
e.printStackTrace();
}
return o;
}
}
然后,您可以将得到的对象强制转换为传递给makeObject(...)
的任何类
Data d = (Data) objectMaker.makeObject(Data.class);
发布于 2019-09-19 06:33:06
从Java8开始,不推荐直接使用newInstance()
。您需要使用Class.getDeclaredConstructor(...).newInstance(...)
,但有相应的异常。
https://stackoverflow.com/questions/9886266
复制相似问题