【发布时间】:2013-12-15 12:09:28
【问题描述】:
我定义了以下类:
public class priorityQueue<T extends Comparable<T>> implements Iterable<T>
它包含以下方法:
- 公共布尔推送(T 节点)
- 公共 T Pop()
- 公共迭代器iterator()
我需要编写一个将元素从集合复制到优先队列的方法
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
如何声明复制元素的方法?
【问题讨论】:
-
按照 Java 类名的约定以大写开头(因此优先队列将是选择),方法名以小写开头,因此方法 Push 应该是 push。
-
我不使用 Java.util 中的方法,也不想覆盖它们,我已经用自己的方法定义了自己的 priorityQueue。
-
如果您有不同的包位置,您不会使用相同的名称覆盖 PriorityQueue。此外,更喜欢使用与标准库中不同的名称,例如 MyPriorityQueue。任何阅读代码的人,包括你以后都会欣赏这一点。
标签: java wildcard generic-method