1. ホーム
  2. java

[解決済み] java.lang.ClassCastException: java.util.Arrays$ArrayList は java.util.ArrayList にキャストできません。

2022-03-04 15:34:06

質問

なぜこのような現象が起こるのか、どうすれば解決できるのか、教えてください。

そこで、Oracle-ADFを使用し、シャトルコンポーネントを使用しています。選択された値を取得するには sos1.getValue();

getValue()メソッドはオブジェクトを返すので、それを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 が返されます。 List の実装ですが、これは java.util.ArrayList . これは、たまたまクラス名が ArrayList の中にあるネストしたクラスです。 Arrays - とは全く異なる型である。 java.util.ArrayList .

もし、あなたが 必要 a java.util.ArrayList の場合は、コピーを作成すればよい。

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

または

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

(で公開されるメンバが不要な場合、そのメンバを削除します。 ArrayList ).