泛型方法:
泛型方法可以接收各種類型的參數
泛型方法的形式:在返回值前面添加< 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");
}
}