使用Class.forName()并实例化该类

时间:2014-03-29 15:31:13

标签: java

我有一个数据库,其中包含我想要放在List<MyInterface>中的类名列表。

我这样做:

List<MyInterface> list = new ArrayList<MyInterface>();
for(...) {
    MyInterface obj = (MyInterface)Class.forName(myClassString).newInstance();
    list.add(obj);
}

这很好用。

有没有办法将新实例转换为myClassString而不是界面?

类似的东西:

"myClassString" concreteObject = (myClassString)Class.forName(myClassString).newInstance();

2 个答案:

答案 0 :(得分:1)

当然,只要你知道具体的课程:

List<MyClass> list = new ArrayList<MyClass>();
for (...) {
    MyClass obj = (MyClass) Class.forName(myClassString).newInstance();
    list.add(obj);
}

...但是使用接口而不是具体类是一种更好的面向对象的实践,因此我将保留代码 - 没有任何更改。

答案 1 :(得分:0)

如果你知道实际的课程,请不要使用Class.forName(),只需使用new

MyClass obj = new MyClass();