泛型方法

泛型方法:
泛型方法可以接收各種類型的參數
泛型方法的形式:在返回值前面添加< T >
如圖:就是泛型方法的定義方式

public class Function1 {
  //泛型方法
    public static <T> void fun1(T data){
        System.out.println(data);
    }
    public static <T> T fun2(T data){
        return data;
    }
    public static void main(String[] args) {
        Function1.fun1(12);
        System.out.println(Function1.fun2("world"));
    }
}

其中,< T > 中的 T 被稱爲類型參數,而方法中的 T 被稱爲參數化類型,它不是運行時真正的參數。

泛型方法是可以與泛型類共存的,
在泛型類中,泛型方法與泛型類是互不干擾的;
在泛型類中,如果在方法中沒有< T >,那該方法就是普通方法。
且泛型類中的普通方法是和泛型類相互聯繫的。

public class Function<T> {//Function<T>是泛型類
    private T message;

    public Function(T message) {
        this.message = message;
    }

    //泛型方法
    //泛型方法與泛型類稍有不同的地方是,類型參數也就是尖括號那一部分是寫在返回值前面的。
    // <T> 中的 T 被稱爲類型參數,而方法中的 T 被稱爲參數化類型,它不是運行時真正的參數。

    //泛型方法的寫法如下:
    public  <T> void print1(T date){
        System.out.println(date);
    }
    public  <T> T print2(T date){
        return date;
    }
    //如果在一個泛型類中存在泛型方法,那麼兩者的類型參數最好不要同名
    //泛型方法與泛型類可以共存,但他們是相互獨立的,互不影響
    public  <E> E print3(E data){
        return data;

    }
    //這是泛型類中的普通方法
    //泛型類中的普通方法是和泛型類聯繫的
    public void print4(T date){  //該方法的參數類型必須與類的類型一樣
        System.out.println(date);

    }
    public static void main(String[] args) {
        Function<String> p=new Function<>("hello");
        p.print1(12);  //這說明  泛型類中的類型參數與泛型方法中的類型參數是沒有相應的聯繫的
         p.print3(18);
       // p.print4(13);//這個就是錯的,因爲print3方法不是泛型方法,是泛型類下的一個普通方法,它的參數類型必須與泛型類的對象的類型相同。
        p.print4("world");
      
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章