2012-03-25 82 views
1
Stack<E>[] stacks = {new Stack<Bed>(), new Stack<Bookshelves>(), 
        new Stack<Chair>(), new Stack<Desk>(), new Stack<Table>()}; 

對於類,我必須創建自己的Stack類,它接受我指定的任何對象。根據規範,我必須將所有堆棧放入數組中。創建一個通用堆棧陣列

但是,當我嘗試創建一個堆棧數組時,出現「無法找到符號:E類」錯誤。

我能做些什麼來創建一個通用堆棧數組?

+2

您無法創建泛型數組。但如果可以的話,你想怎麼做呢? – 2012-03-25 22:15:26

+2

你幾乎可以更好地創建'Stacks'的List。 (雖然對於你的具體情況,我坦率地認爲你根本不應該創建一個數組或列表,但應該將不同類型的列表作爲顯式的單獨變量。) – 2012-03-25 22:32:34

回答

6

泛型類型聲明,如<ê>只有當你定義一個類,像

public class Stack<E>{ 
// etc. 
} 

要創建堆棧的數組像你正在做的工作,你既可以使用通配符通用:

Stack<?>[] stacks = {new Stack<Bed>(), new Stack<Bookshelves>(), new Stack<Chair>(), new Stack<Desk>(), new Stack<Table>()}; 

或者如果棧裏面所有的物體都有一個共同的遺產,你可以縮小東西通配符像

Stack<? extends Furniture>[] stacks = {new Stack<Bed>(), new Stack<Bookshelves>(), new Stack<Chair>(), new Stack<Desk>(), new Stack<Table>()}; 
+1

'堆棧 []'工作,但'堆棧<? extends Furniture> []'並不是因爲你不能創建泛型數組,至少不是用那麼好的簡短語法:/ – 2012-03-25 22:22:38

+0

非常感謝! – prunes4u 2012-03-25 23:55:57