[純屬個人理解,代碼參考自視頻]
用途:
1.用於集合容器中,可以使集合記住存儲數據的類型,防止頻繁轉換類型可能導致的ClassCastException。用於javac編譯器的類型檢查,減少程序因爲類型錯誤導致的bug的風險。
2.類型參數化
泛型方法:
package cn.cc.test;
public class Demo2 {
public static void main(String[] args) {
Integer[] arr = new Integer[] {110,220,330,440,550};
String[] arr2 = new String[] {"s1","s2","s3","s4","s5"};
outputArr(arr);
swap(arr, 1, 3);
System.out.println();
outputArr(arr);
System.out.println();
outputArr(arr2);
swap(arr2, 1, 3);
System.out.println();
outputArr(arr2);
}
private static <T> void outputArr(T[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+", ");
}
}
private static void outputArr(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+", ");
}
}
private static void outputArr2(String[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+", ");
}
}
/*
使用泛型方法需要定義一個類型,使用大寫字母表示T(也可是其他字母):
這個T表示任意的類型,通常寫在返回值類型之前
這個T就相當於定義了一個類型,這個類型是T
接下來即可使用這個T類型了
*/
public static <T> void swap(T[] arr, int i, int j) {
T temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
private static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i]=arr[j];
arr[j]=temp;
// arr[i] = arr[i] ^ arr[j];
// arr[j] = arr[j] ^ arr[i];
// arr[i] = arr[i] ^ arr[j];
}
private static void swap2(String[] arr, int i, int j) {
String temp = arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
泛型類:
package cn.cc.test;
/**
* 自定義泛型--泛型類
* 泛型類的定義和練習
* @author ???
*
* @param <T>
*/
public class Demo4<T> {
T t;
public void setontent(T t) {
this.t=t;
}
public T getContent() {
return this.t;
}
/**
* 靜態方法不能使用類定義的泛型
* @param t
*/
//public static void fun(T t) {}
}