1. 程式人生 > 實用技巧 >泛型<T,...>

泛型<T,...>

泛型<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)不同泛型直接引用不能向後賦值,泛型不存在多型。