Java Generics:Comparable类型中的compareTo(捕获#2-of?extends E)方法不适用于参数(Comparable)

时间:2016-02-21 10:31:56

标签: java generics

我正在编写通用代码来对堆栈进行排序,但在调用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)在类型中   可比较不适用于   参数(可比较)

写道如何在没有警告的情况下这样做。

1 个答案:

答案 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
        }
    }
}