JAVA - 使用通过其名称(字符串值)获得的类进行转换

标签 java class reflection casting

如果我使用预定义的类,这就是我的代码的样子:

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/

相关文章:

java - 类加载器 : how to load class from another project

Java使用反射调用方法

java - 克隆是如何在幕后工作的?

java - 无法从上下文中将请求字符编码设置为 UTF-8

Java 持久性 (JPA) 堆问题

java - 我需要帮助,我的 java 程序在编译时没有返回任何内容

javascript - 通过 jQuery 添加类

java - 迭代反射的子类,变量似乎没有阴影,IntelliJ 似乎有冲突

c# - 在 .Net 中使用私有(private)集初始化属性

java - 使用 log4j 在控制台中单击类名和行号