Java基礎第二遍-泛型
阿新 • • 發佈:2021-11-10
什麼是泛型
- Java泛型(generics)是JDK5中引入的新特性,泛型提供了編譯時型別安全檢測機制,該機制允許我們在編譯時檢測到非法的型別資料結構。
- 泛型的本質就是引數化型別,也就是所操作的資料型別被指定為一個引數
- 通俗來講:就是為了約束資料結構的型別
ArrayList<String> list = new ArrayList<>();
泛型類、介面
//自定義泛型類 package com.bixiangdong.generic; // 這裡的T就是一個形式引數,在使用類的時候指定的 類似於:ArrayList<String> list = new ArrayList<>(); //泛型類的使用:類名<具體的資料型別> 物件名 = new 類名<具體的資料型別>(); //JDK 1.7 後面的具具體的資料型別可以不寫 泛型類的使用:類名<具體的資料型別> 物件名 = new 類名<>(); public class Generic<T> { private T key; public Generic(T key){ this.key=key; } public T getKey(){ return this.key; } public void setKey(T key) { this.key = key; } @Override public String toString() { return "Generic{" + "key=" + key + '}'; } }
- 泛型類在使用的時候如果沒有指定具體的型別,將預設指定為Object型別來操作
- 泛型類不支援具體的資料型別:int、float等,支援類,Integer等
package com.bixiangdong.generic; import java.util.ArrayList; import java.util.Random; public class Demo01 { public static void main(String[] args) { //抽獎品 ProductGetter<String> objectProductGetter = new ProductGetter<>(); objectProductGetter.addProduct("哇哈哈"); objectProductGetter.addProduct("勇闖天涯"); objectProductGetter.addProduct("百事可樂"); objectProductGetter.addProduct("可口可樂"); objectProductGetter.addProduct("雪碧"); System.out.println(objectProductGetter.getProduct()); //抽獎金 ProductGetter<Integer> objectProductGetter2 = new ProductGetter<>(); objectProductGetter2.addProduct(1230); objectProductGetter2.addProduct(4564); objectProductGetter2.addProduct(156561); objectProductGetter2.addProduct(4546); objectProductGetter2.addProduct(48452); System.out.println(objectProductGetter2.getProduct()); } } class ProductGetter<T>{ Random random = new Random(); //獎品 private T product; //獎品池 ArrayList<T> list = new ArrayList<>(); //新增獎品 public void addProduct(T t){ list.add(t); } //獲取獎品 public T getProduct(){ return list.get(random.nextInt(list.size())); } }
泛型類派生子類
- 子類繼承父類,父類如果是一個泛型類,子類也是一個泛型類,那麼父類的泛型標識需要於子類一致,這是為了在使用子類的時候,指定的泛型可以傳遞給父類