0

次のコードにはコンパイルの問題があります。コンパイルエラーも添付されています。同じ解決策を提案してください。

コード:

import java.util.*;

class test{

    int key;

    public static void main(String []args){
        test obj = new test();
        obj.key = 9999;

        LinkedList al = new LinkedList();
        al.add(obj);

        Iterator itr = al.iterator();
        while(itr.hasNext()){
            test temp = new test();
            temp = itr.next();
            System.out.println(temp.key);
        }   
    }
}

コンパイルエラー:

test.java:17:エラー:互換性のないタイプ

temp = itr.next(); ^

必須:テスト

見つかった:オブジェクト

4

2 に答える 2

2

2つの解決策があります:

古いソリューション(Java 1.5より前):

public static void main(String []args){
    test obj = new test();
    obj.key = 9999;

    LinkedList al = new LinkedList();
    al.add(obj);

    Iterator itr = al.iterator();
    while(itr.hasNext()){
        test temp = new test();
        // use type cast
        temp = (test) itr.next();
        System.out.println(temp.key);
    }   
}

一般的なソリューション(Java 1.5以降):

public static void main(String []args){
    test obj = new test();
    obj.key = 9999;

    LinkedList<test> al = new LinkedList<test>();
    al.add(obj);

    Iterator<test> itr = al.iterator();
    while(itr.hasNext()){
        test temp = new test();
        // use Generic
        temp = itr.next();
        System.out.println(temp.key);
    }   
}
于 2012-07-02T14:49:33.393 に答える
1

its.next()のインスタンスを返しますがObjectTest

次のようにしてください

LinkedList<Test> al = new LinkedList<Test>();
al.add(obj);

Iterator<Test> itr = al.iterator();

したがって、コンパイラは、インスタンスLinkedList a1のみを保持できることを認識しているTestため、反復中は、インスタンスのみを保持します。Test

于 2012-07-02T13:37:06.983 に答える