日韩精品欧美激情国产一区_中文无码精品一区二区三区在线_岛国毛片AV在线无码不卡_亞洲歐美日韓精品在線_使劲操好爽好粗视频在线播放_日韩一区欧美二区_八戒八戒网影院在线观看神马_亚洲怡红院在线色网_av无码不卡亚洲电影_国产麻豆媒体MDX

T extends Comparable<T>和 T extends Comparable

時間:2020-04-13 00:07:26 類型:JAVA
字號:    

1.  <T extends Comparable<? super T>>代表什么意思

  extends后面跟的類型,如<任意字符 extends="">表示泛型的上限。示例代碼如下:

import java.util.*;
class Demo<T extends List>{}
public class Test
{
    public static void main(String[] args) {
    Demo<ArrayList> p = null; // 編譯正確
//這里因為ArrayList是List的子類所以通過
//如果改為Demo<Collection> p = null;就會報錯這樣就限制了上限
    }
}

2.  <T extends Comparable<T>> 和 <T extends Comparable<? super T>> 有什么不同

  接下來我們通過對比,使得大家對為何要這樣編寫代碼有更加深刻的印象。

  它代表的意思是:類型T必須實現(xiàn)Comparable接口,并且這個接口的類型是T。這樣,T的實例之間才能相互比較大小。這邊我們以Java中GregorianCalendar這個類為例。

import java.util.GregorianCalendar;
class Demo<T extends Comparable<T>>{}
//注意這里是沒有? super的
public class Test
{
    public static void main(String[] args) {
       Demo<GregorianCalendar> p = null; 
        }
}

 這里編譯報錯,因為這里的<T extends Comparable<T>>相當于<GregorianCalendar extends Comparable<GregorianCalendar>>,但是GregorianCalendar中并沒有實現(xiàn)Comparable<GregorianCalendar>,而是僅僅持有從Calendar繼承過來的Comparable<Calendar>,這樣就會因為不在限制范圍內(nèi)而報錯

  它代表的意思是:類型T必須實現(xiàn)Comparable接口,并且這個接口的類型是T或者是T的任一父類。這樣聲明后,T的實例之間和T的父類的實例之間可以相互比較大小。同樣還是以GregorianCalendar為例。代碼如下所示:

import java.util.GregorianCalendar;

class Demo<T extends Comparable<? super T>>{}

public class Test1
{
    public static void main(String[] args) {
       Demo<GregorianCalendar> p = null; // 編譯正確
    }
}

 此時編譯通過,這里可以理解為<GregorianCalendar extends Comparable<Calendar>>

<