Java如何从字符串实例化一个类
我有一串
String className = "DummyClass"
现在我想创建一个类的对象,其中的类名是 这是一样的东西
Object className = new className() // I know it's not possible.
我想知道怎么做…
回答:
“使用java.lang.reflect
”将回答您的所有问题。首先Class
使用来获取对象Class.forName()
,然后:
如果要实例化使用检索的类,
forName()
则必须首先要求它提供一个java.lang.reflect.Constructor
代表我想要的构造函数的对象,然后要求该Constructor
对象创建一个新对象。该方法getConstructor(Class[]
parameterTypes)在
Class
将检索Constructor
;然后,我可以
Constructor
通过调用其方法来使用它newInstance(Object[] parameters)
:Class myClass = Class.forName("MyClass");
Class[] types = {Double.TYPE, this.getClass()};
Constructor constructor = myClass.getConstructor(types);
Object[] parameters = {new Double(0), this};
Object instanceOfMyClass = constructor.newInstance(parameters);
有一种newInstance()
方法Class
似乎可以满足您的要求。 。它将静默地将检查的异常转换为未检查的异常。
请注意,此方法传播由nullary构造函数引发的所有异常,包括已检查的异常。这种方法的使用有效地绕过了编译时异常检查,否则该检查将由编译器执行。该
Constructor.newInstance
方法通过将构造函数抛出的任何异常包装在(选中)中来避免此问题InvocationTargetException
。
以上是 Java如何从字符串实例化一个类 的全部内容, 来源链接: utcz.com/qa/415861.html