アプリ版:「スタンプのみでお礼する」機能のリリースについて

JavaのArrayListについて質問します。

Class A extends OyaA
の関係があります。

ArrayList<A> arrayA

ArrayList<OyaA> arrayOyaA

 arrayOyaA=(ArrayList<OyaA>)arrayA;
 arrayA=(ArrayList<A>) arrayOyaA;
のCastを行いたいとおもいます。コンパイルエラーになってしまいます。
Castする方法はありますでしょうか。
なければ上手くデータ変換する方法を教えてください。
何卒宜しくお願い致します。

A 回答 (4件)

>arrayA=arrayOyaA;は同じコンパイルエラーが発生しました。


>arrayOyaA=arrayA;はエラーが発生しませんでした。

キャストする前提だと思ったんですけど(だからわざわざキャストまでは書かなかった)違ったんでしょうか?
    • good
    • 1

Genericsの型チェックを行わないリストを使えばいいのでは?



ArrayList<A> arrayA;
ArrayList<OyaA> arrayOyaA;

ArrayList noTypedList = new ArrayList();

noTypedList = arrayA;
arrayOyaA = noTypedList;
noTypedList = arrayOyaA;
arrayA = noTypedList;

ただ、このコードレビューを私が担当したら、やり直させます。
    • good
    • 0
この回答へのお礼

ご教授していただいたコードは確かにコンパイルエラーが発生しませんでした。
コードレビューでやり直しにならない方法を、お手数掛けますが、ご教授していただければ幸いです。

お礼日時:2014/05/11 22:35

OyaAとAのスーパークラス,サブクラスの関係にありますけど、


ArrayList<OyaA>とArrayList<A>はスーパークラス,サブクラスの関係にないので当然です。
やるとするなら

ArrayList<A> arrayA

ArrayList<? extends OyaA> arrayOyaA
    • good
    • 0
この回答へのお礼

ご指摘の通り、ArrayList<OyaA>とArrayList<A>はスーパークラス,サブクラスの関係にないのは理解できます。

以下のようにしても、
ArrayList<A> arrayA

ArrayList<? extends OyaA> arrayOyaA

arrayA=arrayOyaA;は同じコンパイルエラーが発生しました。
arrayOyaA=arrayA;はエラーが発生しませんでした。
ご教授ありがとうございます。

お礼日時:2014/05/11 22:31

エラーメッセージは?

    • good
    • 0
この回答へのお礼

以下のようにアンマッチがコンパイルエラーにでます

Type mismatch: cannot convert from ArrayList<SampleActivity.AOya> to ArrayList<SampleActivity.A>

お礼日時:2014/05/11 22:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!