2017-03-02 45 views
0

沒有在這裏Java泛型 - 意外的界限

public class MyList<E extends Number> extends ArrayList<E> { 
} 

問題。

未收到的界限。這是什麼意思?爲什麼它錯了?感謝幫助。

public class MyList<E extends Number> extends ArrayList<E extends Number> { 

} 
+0

你能解釋一下你什麼時候得到這個錯誤嗎?這是編譯錯誤嗎?或者它是在實例化這個類或什麼時候出現的? –

+0

編譯錯誤 – hasNoPatience

回答

5

class MyList<E extends Number>是可以的,因爲你聲明類型參數,所以你必須給它一個名稱(E),你可以選擇將其聲明爲界(extends Number)。

extends ArrayList<E>,而不是你只需要「使用」類型參數:與「<E>」你指的是你的類中聲明的參數,它綁定在其聲明中已經給出。 「<? extends Number>」(?代替E)也會被編譯器接受(儘管它不是你想要的)。相反,「<E extends Number>」被視爲一個類型參數聲明,所以它是一個編譯錯誤。

0
public class MyList<E extends Number> extends ArrayList<E> { 
    private static final long serialVersionUID = -1025575227555594680L; 

} 

這應該工作,沒有編譯錯誤,甚至沒有警告。讓我知道你是否仍然有同樣的錯誤。