2016-08-02 86 views
1

我必須使用泛型爲java分配實現我自己的ArrayList類。出於某種原因,我收到了一個不兼容的類型錯誤,並且我在嘗試在別處尋求幫助時失敗了。如何解決我的代碼中的不兼容類型

這裏之後確切的錯誤我的代碼:

public <E> boolean addItem (E item) 
{   
    if (numElements == list.length) {    
     enlarge(); 
     list [numElements] = item; 
     numElements ++; 
     return true; 
    } else {     
     list [numElements] = item; 
     numElements ++; 
     return true; 
    } 
} 

的錯誤:

ArrayList.java:91: error: incompatible types 
         list [numElements] = item; 
              ^(points at item) 
    required: E#2 
    found: E#1 
    where E#1,E#2 are type-variables: 
    E#1 extends Object declared in method <E#1>addItem(E#1) 
    E#2 extends hasKey declared in class ArrayList 

我道歉,如果這已經回答了其他地方,我只是不知道我應該是什麼尋找找到我需要的答案。

+0

「list」和「item」的類型是什麼? –

+0

我們可以請您提供完整的課程代碼嗎?這會讓它變得更容易 –

+0

如果可以,請發佈一個MCVE(http://stackoverflow.com/help/mcve) – Bajal

回答

4

根據你的錯誤,你有兩個類型變量叫做E,一個在類中,另一個在方法addItem中。您應該簡單地從addItem方法中刪除類型參數。

變化

public <E> boolean addItem (E item) 

public boolean addItem (E item) 

這同樣適用於具有其表示ArrayList部件類型一般類型參數你的類的任何其他非靜態方法。它們都應該使用在類級別中聲明的泛型類型參數。

+0

或' boolean addItem(T item)' – Andrew

+0

這解決了這個問題,謝謝。 –