2017-06-17 55 views
-1

我有A类的一个对象:类型不匹配返回项从链表

public class A 
{ 
    private int num; 
    private char color; 
} 

那我想读入使用迭代器从一个LinkedList数组,像这样:

public static void main() 
{ 
    LinkedList<A> A = new LinkedList<A>(); 

    //make some objects of class A 

    A.add(A1); 
    A.add(A2); 
    A.add(A3); 

    Iterator it = A.iterator(); 

    A[] arrayA = new A[3]; 

    for (int i = 0; i < 3; i++) 
     { 
      > arrayA[i] = it.next(); 
     } 
} 

在上面的代码中标有>的行给了我下面的编译器错误:Type mismatch: cannot convert from Object to A

我看了这个,并认为我是安全的从原始类型的问题由ins将LinkedList转换为A类型,并且LinkedList将返回一个A,而不是Object,但它仍然给我带来相同的编译器错误。这是为什么?

+0

这是第15行? –

回答

1

您必须指定迭代器的仿制药:

Iterator<T> it = A.iterator(); 

因为你没有明确指定,迭代器it存储原始类型(Object)。

如果你不想指定遗传学(但我肯定会推荐这样做),你必须明确地投从it.next()返回值:

Iterator it = A.iterator(); 


for (int i = 0; i < 3; i++) { 
    arrayA[i] = (A) it.next(); 
} 
-1

尝试投it.next()A.以arrayA [i] =(A)it.next();

1

因为,你有没有低于线

Iterator it = A.iterator(); 

你需要指定泛型返回的A实例指定类型it.next();回报Object实例。

Iterator<A> it = A.iterator(); 
1

因为你不指定迭代器的类型,你的迭代器是原始类型化的,正确的代码在这里:

public static void main() { 
    LinkedList<A> A = new LinkedList<A>(); 

    A.add(new A()); 
    A.add(new A()); 
    A.add(new A()); 

    Iterator<A> it = A.iterator(); 

    A[] arrayA = new A[3]; 

    for (int i = 0; i < 3; i++) { 
     arrayA[i] = it.next(); 
    } 
} 
相关问题