问问题
100 次
3 回答
6
它改变了类型参数,因为这个方法可以操作任何CyclicQueue
,而不仅仅是一个CyclicQueue<T>
.
也可以写成
public void emptyList(CyclicQueue<?> queue) {
while(!queue.isEmpty()) { queue.pop(); }
}
于 2013-06-12T02:21:26.300 回答
3
它是一种不一定与T
. 如果你有:
class CyclicQueue<T> {
public T foo(CyclicQueue<T> x) {...}
public <S> S bar(CyclicQueue<S> y) {...}
}
foo
只能采用其自身类型的循环队列 ( T
),但bar
可以采用CyclicQueue
任何类型的 a。
于 2013-06-12T02:21:50.820 回答
0
emptyList 有自己的参数类型,它实际上可以使用相同的参数类型名称T
public <T> void emptyList(CyclicQueue<T> queue) {
while(!queue.isEmpty()) { queue.pop(); }
}
但编译器会发出警告The type parameter T hides parameter T
,因为在此方法中无法使用类参数类型,例如
public <T> void emptyList(CyclicQueue<T> queue) {
T e = data[0]; <-- ambiguous
...
于 2013-06-12T04:29:46.870 回答