如果我使用预定义的类,这就是我的代码的样子:
List<MyClass> result = new ArrayList<MyClass>();
try {
Query query = mgr.newQuery(MyClass.class);
for(Object obj : (List<Object>) query.execute()) {
result.add(((MyClass) obj));
}
}
....
return result;
现在我需要更通用:从通用类名(作为字符串,即“TheChosenOne”)开始,我需要做同样的事情,但我无法弄清楚类型转换应该如何完成。 .
只是举例说明我正在尝试做的事情:
String str = "TheChosenOne"; //this value may change
Class cls;
List<Object> result = new ArrayList<Object>();
try {
if(str.equals("TheChosenOne"))
cls = Class.forName("com.blabla.TheChosenOne");
else if(str.equals("Rabbit"))
cls = Class.forName("com.blabla.Rabbit");
else if(str.equals("Batman"))
cls = Class.forName("com.heroes.Batman");
else
cls = null;
if(cls != null){
Query query = mgr.newQuery(MyClass.class);
for(Object obj : (List<Object>) query.execute()) {
result.add(((???) obj)); //I need help here!
}
}
}
...
return result;
我选择了“Class.forName()...”部分 here .
有什么建议吗?提前致谢,致以最诚挚的问候
最佳答案
您尝试执行的操作是不必要的,因为您的列表声明为 List<Object>
所以不需要强制转换。
-- 编辑前--
不确定我是否理解您的需求,但您是否尝试使用:
Class.cast(object)
这是java.lang.Class的一个方法
关于JAVA - 使用通过其名称(字符串值)获得的类进行转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14975385/