我定义了以下类:
public class priorityQueue<T extends Comparable<T>> implements Iterable<T>
它包含以下方法:
我需要编写一个方法,将集合中的元素复制到priorityQueue
public static<T> void copy(Collection<T> source, priorityQueue<? extends Comparable<T>> dest) {
for(T elem:source){
dest.Push(elem);
}
}
我收到错误:
The method Push(capture#1-of ? extends Comparable<T>) in the type priorityQueue<capture#1-of ? extends Comparable<T>> is not applicable for the arguments (T)
为什么我不能写方法:
public static<T> void copy(Collection<T> source, priorityQueue<T extends Comparable<T>> dest)
我收到错误:
Syntax error on token "extends",, expected
如何声明复制元素的方法?
答案 0 :(得分:2)
由于此时已定义T
,请尝试使用
public static<T extends Comparable<T>>
void copy(Collection<T> source, priorityQueue<T> dest) {}
答案 1 :(得分:0)
您正尝试在静态方法中使用未定义类型的通配符。作为静态,类的通配符定义无效,您需要在方法中指定它们。
添加另一个通配符,因此方法结束如下:
public static<T, P extends PriorityQueue<Comparable<T>>> void copy(Collection<T> source, P dest) {
for(T elem:source){
dest.Push(elem);
}
}