gpt4 book ai didi

java - 将 ArrayList 转换为 List 给出 ClassCastException

转载 作者:行者123 更新时间:2023-12-01 19:04:36 25 4
gpt4 key购买 nike

我正在转换存储过程以完成 JPA 查询。 SP 查询之一如下,我将其转换为实体类。我将其转换为定义为通用模型的 bean,这会导致 classcastException。

Java类中结果集rs4的SP查询如下:

 rs4 Query: select command_value as descr from SCAN_COMMAND_NAME 
where command_name = 'AAA' ORDER BY SEQ;

这里将结果集rs4转换为GenericModel:

ResultSet rs4 = (ResultSet) cs.getObject(cnt++);
List commandRotateLi = new BeanProcessor().toBeanList(rs4,GenericModel.class);
session.setAttribute("coRotate", commandRotateLi);
///...
..///
ArrayList coRotate = (ArrayList) session.getAttribute("coRotate");
for(int x = 0; x < coRotate.size(); x++){
gm = (GenericModel) coRotate.get(x);
///
}

上面的代码工作正常。下面是JPA转换后的代码。

List<ScanCommandName> scanCommandList = new ArrayList<ScanCommandName>();
query = em.createNamedQuery("ScanCommandName.findByCommandName", ScanCommandName.class);
query.setParameter("commandName", Constants.IMAGE_MAGICK_ROTATE);
scanCommandList = query.getResultList();

scanCommandList.toString() 给了我 5 个 ScanCommandName 对象。我必须将此列表转换为列表并按上面的方法循环,​​但在 for 循环中遇到类转换异常。

ArrayList list =  new ArrayList();
List<GenericModel> coRotate = null;
for(int y=0; y<scanCommandList.size(); y++){
ScanCommandName s = scanCommandList.get(y);
list.add(s.getCommandValue());
}
coRotate = (List<GenericModel>) (List) list;

我现在正在循环遍历 List coRotate,但在 for 循环的第一行进行类转换。

for(int x = 0; x < coRotate.size(); x++){
gm = (GenericModel) coRotate.get(x);
///
}

java.lang.ClassCastException:java.lang.String 无法转换为 com.GenericModel

任何建议都非常感谢。谢谢。

最佳答案

这本质上就是您正在做的事情:

    ArrayList list = new ArrayList();
List<SomeClass> slist;
list.add("String"); // <-- I'm guessing here based on exception
slist = (List<SomeClass>) list;

for (SomeClass s : slist) { // class cast exception
System.out.println(s);
}


class SomeClass {

}

你这样做了吗:

    ArrayList<String> list = new ArrayList<>();

你不可能这么做

    slist = (List<SomeClass>) list;

错误会在编译时被捕获。

在不知道您的类结构的详细信息的情况下,我怀疑要做您想做的事,coRotate需要保存 GenericModel 的实例和你的ArrayList需要声明为ArrayList<GenericModel> = new ArrayList<>()

关于java - 将 ArrayList 转换为 List<GenericModel> 给出 ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59582482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com