gpt4 book ai didi

java - 奇怪的类强制转换异常

转载 作者:行者123 更新时间:2023-12-01 23:42:27 26 4
gpt4 key购买 nike

我不明白为什么我在代码的最后一行出现 ClassCastException
我想如果我有 OrgStructure 列表参数化 - 就不会有问题

List<MqtAsutrOrgst2> OrgStructure = null;
Query query = null;
...
...

OrgStructure = query.getResultList();
for (Object o : OrgStructure) {

MqtAsutrOrgst2 orgStructureItem = (MqtAsutrOrgst2) o;

}

附: MqtAsutrOrgst2 只是一个@Entity

最佳答案

I can't understand why i've got ClassCastException at the last row of code

我理解的是MqtAsutrOrgst2OrgStructureItemType 的子类或实现类型类(class) 。 List orgstructItems被定义为保留 OrgStructureItemType 子类型的任何内容其中包括MqtAsutrOrgst2可能还有一些其他子类,它们不能相互转换。

MqtAsutrOrgst2 orgStructureItem = (MqtAsutrOrgst2) o;

您强制编译器相信在运行时对象 o将是 MqtAsutrOrgst2 的对象,但实际上它是 OrgStructureItemType 的其他子类的对象。不能转换为 MqtAsutrOrgst2

有更好的方法可以做到这一点,但您可以进行临时修复:

if(o instanceof MqtAsutrOrgst2)     
MqtAsutrOrgst2 orgStructureItem = (MqtAsutrOrgst2) o;

下面的代码将很快失败:

for (MqtAsutrOrgst2 o : OrgStructure) { ... }

关于java - 奇怪的类强制转换异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17693583/

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