Java 无法将抽象类强制转换为实际对象
我试图从REST响应将JSONObject加载到对象实体中,但当我尝试将抽象对象数组转换为真实对象时,我得到了一个异常:Java 无法将抽象类强制转换为实际对象,java,object,for-loop,abstract-class,Java,Object,For Loop,Abstract Class,我试图从REST响应将JSONObject加载到对象实体中,但当我尝试将抽象对象数组转换为真实对象时,我得到了一个异常:EntityAbstract[]无法转换为提要[] Feed扩展了EntityAbstract,因此它们在同一个系列中,当我调试返回的实体时,它们是Feed的实例,而不是EntityAbstract-因此我不明白为什么不允许我执行强制转换 这是cast方法声明(返回值) 当我找回我想要的实体时 for (Feed feed : (Feed[]) ((NewsService) s
EntityAbstract[]无法转换为提要[]
Feed
扩展了EntityAbstract
,因此它们在同一个系列中,当我调试返回的实体时,它们是Feed的实例,而不是EntityAbstract-因此我不明白为什么不允许我执行强制转换
这是cast方法声明(返回值)
当我找回我想要的实体时
for (Feed feed : (Feed[]) ((NewsService) service).getResponse().fetchEntities(Feed.class))
{}
这抛出了一个异常。我应该怎么做才能提示正确的返回数组?抽象类元素的数组不能转换为特定类型的数组,但您可以根据需要转换各个元素:
for (EntityAbstract af : (EntityAbstract[]) ((NewsService) service).getResponse().fetchEntities(Feed.class)) {
Feed feed = (Feed)af;
...
}
不要投射数组,而是投射数组中的对象。也许你也可以看看这里:
for (EntityAbstract af : (EntityAbstract[]) ((NewsService) service).getResponse().fetchEntities(Feed.class)) {
Feed feed = (Feed)af;
...
}