我没有要创建其实例的类的名称。但我确实有类名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应该是一样的?
答案 0 :(得分:1)
Class<BaseClass> sc = (Class<BaseClass>) Class.forName("com.blah.SomeClass");
BaseClass obj = sc.getConstructor().newInstance();
应该足够了。
您不需要传递中间变量,因为SomeClass
是BaseClass
。