泛型<T,...>
阿新 • • 發佈:2020-12-09
泛型<T,...>
1. 本質:引數化型別,把型別作為引數傳遞。
2. 常見形式:泛型類、泛型介面、泛型方法
3.語法:<T,...> T稱為型別佔位符,表示一種引用型別!
4.好處:
- (1)提高程式碼重用性
- (2)防止型別轉換異常,提高程式碼的安全性
5.程式碼實現
-
泛型類
package com.sun.base.Generic; /** * 泛型類 * 語法,類名<T> * T是型別佔位符,表示一種引用型別,如果編寫多個使用逗號隔開 * */ public class Demo01<T> { //使用泛型T //1、建立變數 T t; //2、泛型作為方法的引數 public void show(T t){ System.out.println(t); } //3、泛型作為方法的返回值 public T getT() { return t; } public void setT(T t) { this.t = t; } }
-
泛型介面
package com.sun.base.Generic; /** * 泛型介面 * 語法,介面名<T> * 注意:不能泛型靜態常量 */ public interface MyInterface<T> { String name = "張三"; T server(T t); }
-
泛型方法
package com.sun.base.Generic; /** * 泛型方法 * 語法,<T> 返回值型別 */ public class MyGenericMethod { //泛型方法 public <T> T show(T t){ System.out.println("泛型方法"+t); return t; } }
-
測試
package com.sun.base.Generic; public class textDemo01 { public static void main(String[] args) { //使用泛型類建立物件 //注意:泛型只能使用引用型別,不同泛型類物件不能相互賦值 //泛型類 Demo01<String> objectDemo01 = new Demo01<String>(); objectDemo01.t = "Hello"; objectDemo01.show("大家好,加油"); String t = objectDemo01.getT(); Demo01<Integer> integerDemo01 = new Demo01<>(); integerDemo01.t = 100; integerDemo01.show(200); Integer t1 = integerDemo01.getT(); //泛型介面 MyInterfaceImpl impl = new MyInterfaceImpl(); impl.server("我很帥"); // 泛型方法 MyGenericMethod myGenericMethod = new MyGenericMethod(); myGenericMethod.show("少年強"); myGenericMethod.show(100); myGenericMethod.show(9.99); } }
6.泛型集合
-
概念:引數化型別、型別安全的集合,強制集合元素的型別必須一致。
-
特點:(1)編譯時即可檢查,而非執行時丟擲異常。
(2)訪問時,不必型別轉換(拆箱)。
(3)不同泛型直接引用不能向後賦值,泛型不存在多型。
-