如何创建纯粹基于类名字符串的类实例,该字符串本质上是动态的

时间:2017-01-06 19:57:20

标签: java

我没有要创建其实例的类的名称。但我确实有类名String我正在尝试创建的实例(我构造了String,将一些变量放在一起,所以基本上它本质上是动态的)。但我知道基类。在这种情况下,我如何创建类的实例?我正在尝试以下但它无法正常工作


    Class sc = Class.forName("com.blah.SomeClass");
Object obj = sc.getConstructor().newInstance();
BaseClass bc = sc.cast(obj); //SomeClass is extended from BaseClass

编译器在这种情况下抱怨。我期望sc.cast(obj)会给我SomeClass的实例,但似乎并非如此。我不想做以下任何事情,因为我不知道我之前提到的班级名称:


    BaseClass bc = (SomeClass) obj; 
Or
BaseClass bc = SomeClass.class.cast(obj);

我该怎么办?这让我想到另一个问题。是不是sc和SomeClass.class应该是一样的?

1 个答案:

答案 0 :(得分:1)

Class<BaseClass> sc = (Class<BaseClass>) Class.forName("com.blah.SomeClass");

BaseClass obj = sc.getConstructor().newInstance();

应该足够了。

您不需要传递中间变量,因为SomeClassBaseClass