当前位置: 首页 > 知识库问答 >
问题:

JAVAClassCastException:java。util。无法将数组$ArrayList转换为java。util。ArrayList

戚升
2023-03-14

你能解释一下为什么会发生这种情况,我怎样才能解决它吗?

所以我使用的是Oracle ADF和shuttle组件。我使用sos1获取所选的值。getValue()

getValue()方法返回一个对象,我试图将其转换为ArrayList,以便以后使用它。因此,我创建了arraylistsos1value

然而,这一行代码正在变得疯狂:

sos1Value = (ArrayList) Arrays.asList(sos1.getValue());

我一直在使用java。ClassCastException:java。util。无法将数组$ArrayList转换为java。util。ArrayList

我尝试过其他方法,比如:sos1Value=(ArrayList)sos1。getValue()

但我一直有同样的问题,我能做什么?


共有3个答案

孔君浩
2023-03-14

rrays.asList返回一个List实现,但它不是ArrayListjava.util.。它碰巧有一个ArrayList的类名,但这是Array中的嵌套类-与java.util.ArrayList完全不同的类型。

如果你需要一个java.util.ArrayList,你可以创建一个副本:

ArrayList<Foo> list = new ArrayList<>(Arrays.asList(sos1.getValue()); 

或:

List<Foo> list = new ArrayList<>(Arrays.asList(sos1.getValue())); 

(如果您不需要仅通过ArrayList公开任何成员)。

欧阳勇
2023-03-14

JAVAClassCastException:java。util。无法将数组$ArrayList转换为java。util。ArrayList

您需要将类型设置为java.util.列表

上官兴昌
2023-03-14

简单的方法(不是有效的)是

ArrayList sos2Value = new ArrayList()
sos2Value.addAll(Arrays.asList(sos1.getValue()))

sos2Value是java。util。ArrayList
数组。asList(sos1.getValue())是java。util。数组$ArrayList

但是我不清楚你想做什么。

 类似资料: