重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

↓の文はコードの説明です。
Seriesクラスのいう、数の列を入れるクラスを定義しています。
その中にはインスタンス変数Vector arrayがあります。
arrayの中には、Integerと、インスタンス化されたSeriesを入れます。

イメージを書くとこんな感じです↓
単純にarrayの中身がIntegerのみの場合は、
series[5, 4, 12, 54, 17]
のようになります

arrayの中身にインスタンス化されたSeriesが入ると、
array[5, array[2, 3], 4]
のようかもしれません。

実際のコードは、
import java.util.Vector;

class Series{
Vector<Object> array = new Vector<Object>(0);

Series(){
array.add(new Integer(5));
array.add(new Series(2, 3)); // ネスト
array.add(new Integer(4));

// 全体のarrayを表示
System.out.println(array);
// 入れ子になっているarrayを表示 (エラーになります)
System.out.println(array.elementAt(1).array);
}
Series(int a, int b){
array.add(new Integer(a));
array.add(new Integer(b));
}
}

public class TestSeries {
public static void main(String[] args){
new Series();
}
}

です。

// 入れ子になっているarrayを表示 (エラーになります)
System.out.println(array.elementAt(1).array);

を消去すれば、
出力結果:[5, Series@7f5f5897, 4]
となります。

// 入れ子になっているarrayを表示 (エラーになります)
System.out.println(array.elementAt(1).array);

を実行した時の目標は
出力結果:[2, 3]
となることです。

インデントがなくなって、読みづらいと思いますが、よろしくお願いします。

A 回答 (2件)

「ネストされたオブジェクトを取得したい(J」の回答画像1
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。お陰様で思った通りに動作してくれました。

実は、型キャストは知っている方法で幾つか試したのですが、うまくいきませんでした。

(Series)array.elementAt(1).array
まではいけたのですが、
((Series)array.elementAt(1)) .array
のようにカッコで囲むところには行き着けませんでしたし、このような方法があるとは知りませんでした。勉強になりました。なぜこのような書き方をするのか、まだわかっていないので、貼っていただいた参考URLをもとに調べてみます。

お礼日時:2013/05/20 16:50

こう?


> System.out.println(((Series)array.elementAt(1)).array);
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

>こう?
お陰様で、うまく動作してくれました!
これから頑張ります。

お礼日時:2013/05/20 16:55

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