Java错误:java.lang.Object;无法转换为MyCustomClass

时间:2013-11-19 06:34:15

标签: java arraylist casting

我有以下代码;

private List<MyCustomClassVO> copyMyCustomClassList(List<MyCustomClass> fromList) {
    for (MyCustomClass myCustomClassObj : fromList) {

    }
}

现在我收到错误

  

错误:java.lang.Object;无法转换为MyCustomClass

这是针对声明for (MyCustomClass myCustomClassObj : fromList)

我刚刚调试并检查了fromList。它具有MyCustomClass中定义的所有变量集。但在调试中,它会将fromList类型显示为Vector,列表中的每个成员都显示为Object[]类型。

如何解决问题?

3 个答案:

答案 0 :(得分:1)

您的方法可能会被称为这样的。

List objectsList = new ArrayList();
objectsList.add(new Object());
objectsList.add(new Object());
objectsList.add(new Object());


List<MyCustomClassVO> voList = copyMyCustomClassList(objectsList);

您需要确保传递给方法的列表包含MyCustomClassVO类型的元素或其子类。

答案 1 :(得分:0)

fromList在运行时肯定似乎是List<Object>。由于泛型删除List<Object>会被fromList分配给List<MyCustomClass>而没有任何问题。但代码在 for-each 循环失败,其中Object被强制转换为MyCustomClass

您可以做的最好的事情是检查fromList的填充方式

答案 2 :(得分:0)

尝试将Object类型的objectDataList转换为MyCustomClass的List,如下所示。

ArrayList<MyCustomClass> mylist = (ArrayList<MyCustomClass>) (Object) objectDataList;
for (MyCustomClass myCustomClassObj : mylist) {
    System.out.println("myCustomClassObj : " + myCustomClassObj);
}