2016-04-29 168 views
-1

假设有一个类名作为字符串。从类名称中将对象实例化为字符串

String myClass = "com.whatever.MyClass"; 

如何使用反射,并有MyClass类型的对象,而不是Object,我实例化这个类不使用这样的代码:

MyClass myObj = MyClass.class.cast(instance); 

基本上我想的Object一个实例转换为MyClass不需要在代码中使用MyClass,只需将类名称作为字符串即可。

+0

你不能。为了将其分配给类型为“MyClass”的引用,您需要知道“MyClass”在编译时的情况。 –

+0

而唯一的方法就是这样做http://stackoverflow.com/questions/2215843/using-reflection-in-java-to-create-a-new-instance-with-the-reference-variable-ty – Tunaki

+0

你可以查看工厂模式,将它们放入某种字符串索引的容器中并调用它们。这就是用C++完成的,但我不了解Java。 – 2016-04-29 14:09:57

回答

0

您可以创建一个类的实例,而不必使用反射来导入你的代码的类运行它的方法:

Class clazz = Class.forName("com.whatever.MyClass"); 
Object instance = clazz.newInstance(); // or use the given instance 
clazz.getMethod("myMethod").invoke(instance); 
相关问题