我有一个带有以下签名的功能:
class ABC : public static List<ObjectXYZ> getObjectXYZList(Param1 param1)
我正在以某种方式调用该函数:
List<ObjectXYZ> objectXYZ = ABC.getObjectXYZList(param1);
现在,理想情况下它应该工作,因为我正在分配List的变量,List类型函数的返回值,但是我收到以下错误
java.lang.ClassCastException:java.util.ArrayList无法强制转换为com.org.lib.ObjectXYZ
有人可以建议这里可能有什么问题吗?可能是我需要围绕返回对象进行强制转换?
将代码更新为MCVE,希望此更清晰
java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.someorg.common.ObjectXYZ
// Calling method
List<ObjectXYZ> opaqueVoList = ABC.getObjectList(response);
// Called Method
class ABC {
public static List<ObjectXYZ> getObjectList(Response response)
throws RetryException {
if (some_condition)
List<ObjectXYZ> listObj = new ArrayList<ObjectXYZ>();
//magical stuff
return listObj;
}
}
return null;
}
}
答案 0 :(得分:0)
请查看stacktrace以查看问题发生的确切行。 堆栈跟踪的第一行应该指向您的根本原因。您可以使用该行更新示例代码,或使用stacktrace的相关部分更新问题。 有人只是将ObjectXYZ转换为ArrayList,似乎。
此外,不要从返回列表的方法返回null。而是返回Collections.emptyList()。
RetryException - 这是org.springframework.batch.retry.RetryException吗? 无需声明抛出它的方法,它是RuntimeException。