java.util.ArrayList无法强制转换为对象

时间:2016-10-25 21:07:56

标签: java

我有一个带有以下签名的功能:

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;
    }   
}

1 个答案:

答案 0 :(得分:0)

请查看stacktrace以查看问题发生的确切行。 堆栈跟踪的第一行应该指向您的根本原因。您可以使用该行更新示例代码,或使用stacktrace的相关部分更新问题。 有人只是将ObjectXYZ转换为ArrayList,似乎。

此外,不要从返回列表的方法返回null。而是返回Collections.emptyList()。

RetryException - 这是org.springframework.batch.retry.RetryException吗? 无需声明抛出它的方法,它是RuntimeException。