Java泛型學習

[純屬個人理解,代碼參考自視頻]

用途:

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) {}

}

 

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