是否有可能创建一个堆栈数组而不必在它们出来时进行强制转换? 当我像下面这样做时,Eclipse会给出一个警告,说无法创建一个Stack的通用数组:
Stack<Card>[] cards = new Stack<Card>[52];
是否有可能创建一个堆栈数组而不必在它们出来时进行强制转换? 当我像下面这样做时,Eclipse会给出一个警告,说无法创建一个Stack的通用数组:
Stack<Card>[] cards = new Stack<Card>[52];
List<Stack<Card>> cards = new ArrayList<Stack<Card>>();
Stack<Card>[] decks = new Stack[9]; // Declare
Card c = decks[5].pop(); // This compiles - java 'knows' the type
Integer i = decks[4].pop(); // This will not compile
Stack<Card>[] cards = (Stack<Card>[]) new Stack[52];
你为什么还在使用数组呢?
这是一种底层的编程结构。
如果你不想麻烦地初始化,可以使用List
或Set
(例如org.apache.commons.collections.list.LazyList
)代替数组。
或者至少可以使用 Arrays.asList(new Stack[52])
将数组包装成列表。
我无法复现你的错误...可能是因为设置了不同的警告/错误级别。
嗯,数组不需要是通用的,因为它总是被定义为这样。你为什么认为你必须进行强制转换?我认为Eclipse在这里有点混淆了。