我正在编写通用代码来对堆栈进行排序,但在调用comareTo时收到警告:
public class StackUtility {
public static <E extends Comparable<? extends E>> void sort(IStack<E> stack) {
IStack<E> stack2 = new MyLinkedStack<>();
while (!stack.isEmpty()) {
Comparable<? extends E> e = stack.pop();
while (stack2.isEmpty() && stack2.peek().compareTo(e)>0) {
// some code to be written
}
}
}
}
注意:pop和peek的返回类型是E.
在调用compare时我从Eclipse获得此警告:
方法compareTo(捕获#2-of?extends E)在类型中 可比较不适用于 参数(可比较)
写道如何在没有警告的情况下这样做。
答案 0 :(得分:2)
E
只需实施Comparable<E>
:
public static <E extends Comparable<E>> void sort(IStack<E> stack) {
IStack<E> stack2=new MyLinkedStack<>();
while(!stack.isEmpty()){
E e=stack.pop();
while(stack2.isEmpty() && stack2.peek().compareTo(e)){
//some code to be written
}
}
}