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