java.lang.ClassCastException: java.util.Arrays$ArrayList 无法转换为 java.util.ArrayList
java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.util.ArrayList
你能解释一下为什么会发生这种情况吗?我该如何解决?
所以我正在使用 Oracle-ADF 并且正在使用穿梭组件。我使用 sos1.getValue();
获取选定的值
getValue() 方法 returns 一个对象,我正在尝试将其转换为 ArrayList,以便稍后使用它。因此我创建了 ArrayList sos1Value
然而,这行代码是疯了:
sos1Value = (ArrayList) Arrays.asList(sos1.getValue());
而且我不断收到 java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.util.ArrayList
我尝试过其他方法,例如:sos1Value = (ArrayList) sos1.getValue();
但我一直遇到同样的问题,我该怎么办?
Arrays.asList(sos1.getValue());
生成一个不是 java.util.ArrayList 的列表实现 (java.util.Arrays$ArrayList
) 的实例。因此你不能将它转换为 java.util.ArrayList
.
如果将 sos1Value
的类型更改为 List
,则不需要此转换。
如果你必须有一个java.util.ArrayList
的实例,你可以自己创建它:
sos1Value = new ArrayList (Arrays.asList(sos1.getValue()));
Arrays.asList()
方法返回的 ArrayList
不是 java.util.ArrayList
它是 Arrays
class 内部的静态内部 class。因此,您不能将其转换为 java.util.ArrayList
.
尝试将其转换/分配给 List
。
Arrays.asList
returns List
实现,但不是 java.util.ArrayList
。它恰好有一个 ArrayList
的 class 名称,但这是 Arrays
中的嵌套 class - 与 java.util.ArrayList
.
完全不同的类型
如果您需要一个java.util.ArrayList
,您可以创建一个副本:
ArrayList<Foo> list = new ArrayList<>(Arrays.asList(sos1.getValue());
如果您不需要 ArrayList,只需删除强制转换:
List<Foo> list = Arrays.asList(sos1.getValue());
(如果您不需要 ArrayList
公开的任何成员)。
java.lang.ClassCastException: java.util.Arrays$ArrayList 无法转换为 java.util.ArrayList
您需要将类型设置为java.util.List
简单的方法(效率不高)是
ArrayList sos2Value = new ArrayList()
sos2Value.addAll(Arrays.asList(sos1.getValue()))
sos2 值为 java.util.ArrayList。
Arrays.asList(sos1.getValue()) 是 java.util.Arrays$ArrayList
但是我不清楚你想做什么。
我是这样使用的:
private fun getArtists(): ArrayList<ArtistItem> {
var xp = myDb.daoNote().getArtists() as ArrayList<ArtistItem>
val x: List<ArtistItem> = xp.sortedWith(compareBy { it.isBookmarked})
var pp = ArrayList<ArtistItem>()
for(obj in x)
{
pp.add(obj)
}
return pp
}
你能解释一下为什么会发生这种情况吗?我该如何解决?
所以我正在使用 Oracle-ADF 并且正在使用穿梭组件。我使用 sos1.getValue();
getValue() 方法 returns 一个对象,我正在尝试将其转换为 ArrayList,以便稍后使用它。因此我创建了 ArrayList sos1Value
然而,这行代码是疯了:
sos1Value = (ArrayList) Arrays.asList(sos1.getValue());
而且我不断收到 java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.util.ArrayList
我尝试过其他方法,例如:sos1Value = (ArrayList) sos1.getValue();
但我一直遇到同样的问题,我该怎么办?
Arrays.asList(sos1.getValue());
生成一个不是 java.util.ArrayList 的列表实现 (java.util.Arrays$ArrayList
) 的实例。因此你不能将它转换为 java.util.ArrayList
.
如果将 sos1Value
的类型更改为 List
,则不需要此转换。
如果你必须有一个java.util.ArrayList
的实例,你可以自己创建它:
sos1Value = new ArrayList (Arrays.asList(sos1.getValue()));
Arrays.asList()
方法返回的 ArrayList
不是 java.util.ArrayList
它是 Arrays
class 内部的静态内部 class。因此,您不能将其转换为 java.util.ArrayList
.
尝试将其转换/分配给 List
。
Arrays.asList
returns List
实现,但不是 java.util.ArrayList
。它恰好有一个 ArrayList
的 class 名称,但这是 Arrays
中的嵌套 class - 与 java.util.ArrayList
.
如果您需要一个java.util.ArrayList
,您可以创建一个副本:
ArrayList<Foo> list = new ArrayList<>(Arrays.asList(sos1.getValue());
如果您不需要 ArrayList,只需删除强制转换:
List<Foo> list = Arrays.asList(sos1.getValue());
(如果您不需要 ArrayList
公开的任何成员)。
java.lang.ClassCastException: java.util.Arrays$ArrayList 无法转换为 java.util.ArrayList
您需要将类型设置为java.util.List
简单的方法(效率不高)是
ArrayList sos2Value = new ArrayList()
sos2Value.addAll(Arrays.asList(sos1.getValue()))
sos2 值为 java.util.ArrayList。
Arrays.asList(sos1.getValue()) 是 java.util.Arrays$ArrayList
但是我不清楚你想做什么。
我是这样使用的:
private fun getArtists(): ArrayList<ArtistItem> {
var xp = myDb.daoNote().getArtists() as ArrayList<ArtistItem>
val x: List<ArtistItem> = xp.sortedWith(compareBy { it.isBookmarked})
var pp = ArrayList<ArtistItem>()
for(obj in x)
{
pp.add(obj)
}
return pp
}