我有一个数据库,其中包含我想要放在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();
答案 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();