Java中泛型T的用法

01-描述

T表示:返回值T是泛型,T只是一個佔位符,用來告訴編譯器,這個東西先給我留着,等我編譯的時候再告訴你是什麼類型。

02-用法

第一種用法:

Demo類的getListFisrt方法可以接受任意類型List參數。

package com.eleven.csdn0115;

import java.util.ArrayList;
import java.util.List;

/**
 * <T> T表示:返回值T是泛型,T只是一個佔位符,用來告訴編譯器,這個東西先給我留着,等我編譯的時候再告訴你是什麼類型。
 * 
 * @author sywangu
 *
 */
public class Demo {
	public static void main(String[] args) {
		Demo demo = new Demo(); // 創建一個demo對象

		// 獲取String類型
		List<String> array = new ArrayList<String>(); // 創建一個ArrayList數組
		array.add("a");
		array.add("b");

		demo.getListFirst(array); // Demo類的getListFisrt方法可以接受任意類型List參數
		System.out.println(array);	// 打印出的結果是[a, b]

		// 獲取Number類型
		List<Integer> nums = new ArrayList<Integer>();
		nums.add(12);
		nums.add(13);

		demo.getListFirst(nums);
		System.out.println(nums);	// 打印出的結果是[12, 13]
	}

	/**
	 * <T> T 表示可以傳入任何類型 參數T 
	 * 第一個T表示泛型 
	 * 第二個T表示返回的是T類型的數據 
	 * 第三個T限制參數類型爲T
	 * 
	 * @param data
	 * @return
	 */
	private <T> T getListFirst(List<T> data) {
		if (data == null || data.size() == 0) {
			return null;
		}
		return data.get(0);
	}

}

第二種用法:

Demo2類在初始化的時候已經限定了T的類型,所以getListFirst方法只能接受List類型的參數。

package com.eleven.csdn0115;

import java.util.ArrayList;
import java.util.List;

/**
 * 單獨T的用法
 * 
 * @author sywangu
 *
 */
public class Demo2<T> {
	public static void main(String[] args) {
		// 獲取String類型
		Demo2<String> demo = new Demo2<>();	// 限制"T"的類型爲String
		
		List<String> array = new ArrayList<String>();	// 返回的類型是String
		array.add("a");
		array.add("b");
		
		String str =demo.getListFirst(array);	// 返回的類型是String
		System.out.println(array);	// 打印出的結果是[a, b]
		
		// 獲取Number類型
		Demo2<Integer> demo2 = new Demo2<Integer>();	// 限制"T"的類型爲String
		
		List<Integer> nums = new ArrayList<Integer>();	// 返回Integer類型
		nums.add(1);
		nums.add(2);
		
		Integer num = demo2.getListFirst(nums);	// 返回的類型是Integer
		System.out.println(nums);	// 打印出的結果是[1, 2]
		
	}

	/**
	 * 通用方法
	 * @param data
	 * @return
	 */
	private T getListFirst(List<T> data) {
		if(data == null || data.size() == 0) {
			return null;	
		}
		return data.get(0);
	}
}
發佈了92 篇原創文章 · 獲贊 285 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章