2013-10-13 137 views
0

我實現可管理堆棧的接口,我有以下代碼:問題,在接口的Java泛型

public interface Stack <E>{ 
    public int size(); 
    public boolean isEmpty(); 
    public E top(); 
    public void push(E item); //error here 

,並實現該接口的類有:

public class StackArray<E> implements Stack{ 
    private E array[]; 
    private int top=-1; 
    public StackArray(int n){ 
     array=(E[]) Array.newInstance(null, n); ////not quite sure about this 
    } 
    //more code 
    public void push(E item){ 
     if (top==array.length-1) System.out.println("stack is full"); 
     else{ 
      top++; 
      array[top]=item; 
     } 
    } 

我得到的錯誤是我不重寫推送方法,我看到兩者都具有相同的簽名,但我不太確定。

我該怎麼解決呢?

+0

當你編寫'implements Stack'時,你實際上正在執行'Stack '。 –

+0

小心報告錯誤的位置;通常最好只發布錯誤消息。在你的界面中,錯誤是** not **,它在你的實現類中。 – chrylis

+0

這就是爲什麼你應該總是使用'@ Override'註釋,你的IDE會毫不知情地告訴你問題是什麼 –

回答

5

您沒有約束中的E參數與Stack中的E參數。使用這個聲明:

public class StackArray<E> implements Stack<E>