4

私はJavaを初めて使用しますが、使用しているコードはほとんど自分のものではないので、ご容赦ください...

同じクラスの数十のインスタンスを含む配列リストがあり、そこからいくつかの変数の値を順番に抽出したいと思います。

イテレータを作成しましたが、配列リストを適切に反復できます。クラスインスタンスを抽出しようとすると、問題が発生します。.get(index)を使用するとオブジェクトが返され、変数にアクセスするためにオブジェクトをクラスタイプに変換する方法、または独自のタイプでインスタンスを抽出する方法がわかりません。

誰かがこれを解決する方法をアドバイスできますか?

前もって感謝します。

編集:申し訳ありませんが、最初のインスタンスにコードを含める必要がありました。

ArrayList TopicResults = results.getTopicResults(TopicNum);
ListIterator TopicResultsiter = TopicResults.listIterator();
while(TopicResultsiter.hasNext()){
                    int idx = TopicResultsiter.nextIndex();
                    ResultsList.Result result = TopicResults.get(idx);
                    String DocID = result.docID;
                    System.out.println(DocID);
                }
4

3 に答える 3

8

キャスティングを使用するだけです:

MyClass classInstance = (MyClass)myArray.get(0); 

リスト内のすべてのインスタンスがタイプであると仮定すると、MyClassそうでない場合は次のようになります。ClassCastException

ジェネリックスの反復を使用する方が簡単で安全です。

List<MyClass> myList = new ArrayList<MyClass>(); 
for (MyClass classInstance : myList) {
     classInstance.doSomething();
}

で囲まれ<>たタイプは、リストに格納できるオブジェクトのタイプを指定するため、コンパイル時にすでにこの方法で、タイプを確認しなくてもリストメンバーを安全に使用できます。(J2SE 1.5以降から利用可能)

于 2013-02-18T15:46:19.907 に答える
1

MyType object = (MyType) list.get(index);

于 2013-02-18T15:46:58.377 に答える
1

ArrayListの「get」メソッドによって返されたオブジェクトを、ArrayListと同じタイプの属性に直接割り当てることができます。

たとえば、

ArrayList<MyType> myList;

使用するだけ

MyType myObjectf = myList.get(0);

...明示的な型キャストなしで機能するはずです

于 2013-02-18T15:49:46.140 に答える