Java泛型是一個非常重要的概念,泛型是Java中的一個重要特性,可以幫助我們寫出更加安全和更加通用的代碼。泛型中extends和super是兩個關鍵字,也是Java泛型中非常重要的一個概念。
extends和super聲明在泛型的定義中,用于限制泛型的數據類型范圍,extends表示泛型參數是某個類的子類,super表示泛型參數是某個類的父類。我們通過extends和super關鍵字來實現類型之間的繼承關系。
public class GenericTest { public static void main(String[] args) { List<? extends Number> list1 = new ArrayList<>(); List<? super Integer> list2 = new ArrayList<>(); List<? super Integer> list3 = new ArrayList<>(); List<String> list4 = new ArrayList<>(); list1.add(null); // list1.add(1); // 編譯錯誤 list2.add(1); // list2.add(2L); // 編譯錯誤 list3.add(1); list4.add("hello"); System.out.println(list1.get(0)); System.out.println(list2.get(0)); // System.out.println(list3.get(0)); // 編譯錯誤 System.out.println(list4.get(0)); } }
在上面的代碼中,我們使用了四個不同的泛型來實現類型限制:
1. List<? extends Number>表示該列表中的元素都是Number及其子類的實例,例如Integer、Double、Float等。
2. List<? super Integer>也表示該列表中的元素都是Integer及其父類的實例,例如Object、Number。
3. List<? super Integer>同樣也表示該列表中的元素都是Integer及其父類的實例,但是List<? super Integer>不是List<? extends Number>的子類。
4. List<String>表示該列表中的元素都是String類型的實例。
通過以上代碼我們可以看出,使用extends關鍵字可以限制泛型的下限,表示該泛型參數是某個類的子類,而super關鍵字可以限制泛型的上限,表示該泛型參數是某個類的父類。
上一篇python畫阿貍圖像
下一篇css中加虛線的樣式