- 締切済み
ArrayListのキャスト
JavaのArrayListについて質問します。 Class A extends OyaA の関係があります。 ArrayList<A> arrayA と ArrayList<OyaA> arrayOyaA で arrayOyaA=(ArrayList<OyaA>)arrayA; arrayA=(ArrayList<A>) arrayOyaA; のCastを行いたいとおもいます。コンパイルエラーになってしまいます。 Castする方法はありますでしょうか。 なければ上手くデータ変換する方法を教えてください。 何卒宜しくお願い致します。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- wormhole
- ベストアンサー率28% (1626/5665)
>arrayA=arrayOyaA;は同じコンパイルエラーが発生しました。 >arrayOyaA=arrayA;はエラーが発生しませんでした。 キャストする前提だと思ったんですけど(だからわざわざキャストまでは書かなかった)違ったんでしょうか?
- teketon
- ベストアンサー率65% (141/215)
Genericsの型チェックを行わないリストを使えばいいのでは? ArrayList<A> arrayA; ArrayList<OyaA> arrayOyaA; ArrayList noTypedList = new ArrayList(); noTypedList = arrayA; arrayOyaA = noTypedList; noTypedList = arrayOyaA; arrayA = noTypedList; ただ、このコードレビューを私が担当したら、やり直させます。
- wormhole
- ベストアンサー率28% (1626/5665)
OyaAとAのスーパークラス,サブクラスの関係にありますけど、 ArrayList<OyaA>とArrayList<A>はスーパークラス,サブクラスの関係にないので当然です。 やるとするなら ArrayList<A> arrayA と ArrayList<? extends OyaA> arrayOyaA
お礼
ご指摘の通り、ArrayList<OyaA>とArrayList<A>はスーパークラス,サブクラスの関係にないのは理解できます。 以下のようにしても、 ArrayList<A> arrayA と ArrayList<? extends OyaA> arrayOyaA arrayA=arrayOyaA;は同じコンパイルエラーが発生しました。 arrayOyaA=arrayA;はエラーが発生しませんでした。 ご教授ありがとうございます。
- Tacosan
- ベストアンサー率23% (3656/15482)
エラーメッセージは?
お礼
以下のようにアンマッチがコンパイルエラーにでます Type mismatch: cannot convert from ArrayList<SampleActivity.AOya> to ArrayList<SampleActivity.A>
お礼
ご教授していただいたコードは確かにコンパイルエラーが発生しませんでした。 コードレビューでやり直しにならない方法を、お手数掛けますが、ご教授していただければ幸いです。