2016-10-25 46 views
-4

我有如下签名的函数:的java.util.ArrayList不能被强制转换为对象

class ABC : public static List<ObjectXYZ> getObjectXYZList(Param1 param1) 

我打电话的方式功能:

List<ObjectXYZ> objectXYZ = ABC.getObjectXYZList(param1); 

现在,理想情况下,应工作,因为我正在分配一个List的变量,List类型的函数的返回值,但我收到以下错误

java.lang.ClassCastException:java.util.ArrayList cann不会投到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; 
    } 
} 
+5

错误与发布代码不符。请发布[MCVE](http://stackoverflow.com/help/mcve)。 –

+3

医生代码在这样的情况下没有帮助,它使你的问题和错误似乎不清楚。显示真实的代码 – Li357

+0

你确定你在任何地方都使用一个简单的列表而不是一个数组列表吗? –

回答

0

请看看堆栈跟踪,看看具体线路发生问题。 第一行堆栈跟踪应该准确地指出根本原因。您可以使用该行更新示例代码,或使用stacktrace的相关部分更新问题。 有人正在将ObjectXYZ投射到ArrayList,看来。

另外,不要从返回列表的方法返回null。返回Collections.emptyList()代替。

RetryException - 是这个org.springframework.batch.retry.RetryException? 不需要声明方法来抛出它,它是RuntimeException。

相关问题