2013-06-29 66 views
1

我沒有張貼的全部代碼。我有這樣的:一般使用與內部類的問題

public class LinkedList2<T extends Comparable<T>> implements Iterable<T> { 

    private Node<T> head; 
    private Node<T> tail; 
    private int numOfElem; 

    private class Node<T> { 

     Node<T> next; 
     T data; 

     Node(Node<T> next, T data) { 
      this.next = next; 
      this.data = data; 
     } 
    } 

    private class LinkedList2Iterator<T> implements Iterator<T> { 
      private int count = LinkedList2.this.numOfElem; 
      private Node<T> current = LinkedList2.this.head; 
    } 
}  

javac -Xlint LinkedList2.java我得到這個錯誤:

LinkedList2.java:134: incompatible types 
found : LinkedList2<T>.Node<T> 
required: LinkedList2<T>.Node<T> 
     private Node<T> current = LinkedList2.this.head; 
              ^
1 error 

你能幫忙嗎?

+0

可能重複( http://stackoverflow.com/questions/8512627/java-generics-type-parameter-hiding)和[類型混亂定製的Java迭代器(http://stackoverflow.com/questions/1290611/custom-java-iterator-帶型混淆) –

回答

5

當你定義你的內部類LinkedList2Iterator,你做它一般與另一<T>泛型類型參數。這<T>不從外部類LinkedList2匹配<T>

private class LinkedList2Iterator<T> implements Iterator<T> { 

你並不需要在這裏聲明另一個<T>,只是使用<T>從外部類,這仍然是在範圍:

private class LinkedList2Iterator implements Iterator<T> { 
[Java泛型類型參數隱藏]的
+0

啊哈!謝謝。但是迭代器中的T呢?這與LinkedList2中的T不衝突? – abc

+0

'迭代器'中的''不與'LinkedList2 '衝突,因爲它只是使用'LinedList2 '中定義的''。 – rgettman