020_泛型变量的类型限定
生活随笔
收集整理的這篇文章主要介紹了
020_泛型变量的类型限定
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 泛型變量的類型限定
1.1. 實例
public static <T> T get(T t1,T t2) { if(t1.compareTo(t2) >= 0); // 編譯錯誤 return t1; }1.2. 因為, 在編譯之前, 也就是我們還在定義這個泛型方法的時候, 我們并不知道這個泛型類型T, 到底是什么類型, 所以, 只能默認T為原始類型Object。所以它只能調用來自于Object的那幾個方法, 而不能調用compareTo方法。
1.3. 可我的本意就是要比較t1和t2, 怎么辦呢? 這個時候, 就要使用類型限定, 對類型變量T設置限定(bound)來做到這一點。我們知道, 所有實現Comparable接口的方法, 都會有compareTo方法。所以, 可以對做如下限定:
public static <T extends Comparable<T>> T get(T t1,T t2) { // 添加類型限定 if(t1.compareTo(t2)>=0); return t1; }2. 類型限定在泛型類、泛型接口和泛型方法中都可以使用, 不過要注意下面幾點:
2.1. 不管該限定是類還是接口, 統一都使用關鍵字 extends
2.2. 可以使用&符號給出多個限定, 比如:
public static <T extends Comparable<T>&Serializable> T get(T t1,T t2)2.3. 如果限定既有接口也有類, 那么類必須只有一個, 并且放在首位置:
public static <T extends Object&Comparable&Serializable> T get(T t1,T t2)?
總結
以上是生活随笔為你收集整理的020_泛型变量的类型限定的全部內容,希望文章能夠幫你解決所遇到的問題。