2013-11-24 83 views
0
public class Ctrl { 
    LinkedStack<T> x = new LinkedStack<T>(); 

我想第一次使用泛型,我得到了錯誤「在這條線的多個標記 - T不能解析爲類型」的上述行。我沒有做什麼對?泛型錯誤

public class LinkedStack<E> { 
    private static class LinkedNode<T> 
    { 
     private T item; 
     private LinkedNode<T> next; 

     private LinkedNode(T value) 
     { 
      item = value; 
      next = null; 
     } 

      private LinkedNode(T value, LinkedNode<T> reference) 
      { 
       item = value; 
       next = reference; 
      } 
     } 
protected LinkedNode<E> top; 
    public LinkedStack() 
    { 
     top = null;  // empty stack 
    } 
+0

您正在使用'T'作爲參數,但它不被任何聲明(我們可以看到)。 –

+2

'T'是類型參數的名稱。你需要提供一個實際的類型(例如'Integer','Object'等) –

+0

你是否打算把Ctrl作爲一個泛型類?如果是這樣,聲明應該是'public class Ctrl {'etc.等 –

回答

3

無處不在使用相同的類型參數名稱。

然後將它作爲參數添加到您的Ctrl類。

public class Ctrl<T> { 
    LinkedStack<T> x = new LinkedStack<T>(); 

現在,所有具體的實現必須定義T。例如:

public class AppCtrl extends Ctrl<Integer> { 
} 

或者用一個具體的類型來實例化它。

Ctrl myctrl = new Ctrl<Integer>();// + necessary constructor params 

或者,如果你不想通過它,直接指定它裏面Ctrl

public class Ctrl { 
     LinkedStack<Integer> x = new LinkedStack<Integer>();