1

我定义了以下类:

 public class priorityQueue<T extends Comparable<T>> implements Iterable<T> 

它包含以下方法:

  • 公共布尔推送(T节点)
  • 公共T流行()
  • 公共迭代器 iterator()

我需要编写一个将元素从集合复制到 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

如何声明复制元素的方法?

4

2 回答 2

2

因为T此时已经定义了,所以试试这个

public static<T extends Comparable<T>> 
 void copy(Collection<T> source, priorityQueue<T> dest) {}
于 2013-12-15T12:20:12.970 回答
0

您试图在静态方法中使用未定义类型的通配符。由于是静态的,类的通配符定义无效,您需要在方法中指定它们。

添加另一个通配符,因此方法结束如下:

public static<T, P extends PriorityQueue<Comparable<T>>>  void copy(Collection<T> source, P dest) { 
    for(T elem:source){
        dest.Push(elem);
    }
}
于 2013-12-15T12:22:04.710 回答