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

有两种解决方案:

旧解决方案(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()返回一个实例Object而不是Test

使其如下

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

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

所以编译器现在知道LinkedList a1只能保存Test实例,所以在迭代时我们只会有实例Test

于 2012-07-02T13:37:06.983 回答