これがなぜ起こるのか、どうすれば修正できるのか説明してもらえますか?
したがって、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
だけで公開されるメンバーが必要ない場合)。
Arrays.asList(sos1.getValue());
は、Java.util.ArrayListではないList実装(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
クラス内の静的内部クラスです。したがって、Java.util.ArrayList
にキャストすることはできません。
List
に変換/割り当ててみてください。