具有Comparable接口的Java通用语法

Wei*_*vid 0 java generics comparable

我正在尝试实现一个简单的插入排序算法,并使其通用于Comparable接口的所有实例.

public static <E extends Comparable<E>> void InsertionSort( E [] array)
{
    for(int i = 1; i < array.length; i++)
    {
        E current = array[i];

        int k;
        for(k = i-1; k >= 0 && current.compareTo(array[k]) < 0 ; k--)
        {
            array[k+1] = array[k];

        }

        array[k+1]=current;

    }

    for(int l = 0; l < array.length; l++)
    {
        System.out.print(array[l]+" ");

    }

    System.out.println();
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是我不知道它们之间的区别

 <E extends Comparable<E>>
Run Code Online (Sandbox Code Playgroud)

 <E extends Comparable>
Run Code Online (Sandbox Code Playgroud)

他们都工作,但我不知道第一个的原因.

Lou*_*man 7

E extends Comparable<E>表示可以将实例E与其他类型的对象进行比较E.

E extends Comparable意味着E可以将一个实例与......进行比较.这是一种原始类型,这很糟糕.不要那样做.