泛型类
1 ?泛型類的定義格式:
class 類名<聲明自定義泛型>{
}
示例:
1 //需求: 編寫一個(gè)數(shù)組 的工具類 2 class MyArrays<T> { 3 public void reverse(T[] arr) { 4 for (int startIndex = 0, endIndex = arr.length - 1; startIndex < endIndex; startIndex++, endIndex--) { 5 T temp = arr[startIndex]; 6 arr[startIndex] = arr[endIndex]; 7 arr[endIndex] = temp; 8 } 9 } 10 11 public String toString(T[] arr) { 12 StringBuilder sb = new StringBuilder(); 13 for (int i = 0; i < arr.length; i++) { 14 if (i == 0) { 15 sb.append("[" + arr[i] + ","); 16 } else if (i == arr.length - 1) { 17 sb.append(arr[i] + "]"); 18 } else { 19 sb.append(arr[i] + ","); 20 } 21 } 22 return sb.toString(); 23 } 24 } 25 26 public class Demo2 { 27 public static void main(String[] args) { 28 Integer[] arr = { 1, 2, 3, 4 }; 29 MyArrays<Integer> tool = new MyArrays(); 30 tool.reverse(arr); 31 System.out.println("數(shù)組的元素為: " + tool.toString(arr)); 32 33 String[] arr2 = { "aaa", "bbb", "ccc" }; 34 MyArrays<String> tool2 = new MyArrays(); 35 tool2.reverse(arr2); 36 System.out.println("數(shù)組的元素為: " + tool2.toString(arr2)); 37 } 38 39 }?
2 ?泛型類要注意的事項(xiàng):
A. ?在類上自定義泛型的具體數(shù)據(jù)類型是在使用該類的時(shí)候創(chuàng)建對(duì)象時(shí)候確定的。
B. ?如果一個(gè)類在類上已經(jīng)聲明了自定義泛型,如果使用該類創(chuàng)建對(duì)象的時(shí)候沒(méi)有指定泛型的具體數(shù)據(jù)類型,那么默認(rèn)為Object類型
?
例如:
那么
C. ?在類上自定義泛型不能作用于靜態(tài)的方法,如果靜態(tài)的方法需要使用自定義泛型,那么需要在方法上自己聲明使用。
原因:非靜態(tài)方法是在創(chuàng)建對(duì)象后才能調(diào)用的;靜態(tài)方法不一定需要通過(guò)創(chuàng)建對(duì)象來(lái)調(diào)用。
而泛型的具體數(shù)據(jù)類型是在使用該類創(chuàng)建對(duì)象時(shí)候才確定的。
例如:
?
? D. ? 此時(shí),靜態(tài)方法上聲明的<T>與類上聲明的<T>不會(huì)沖突,因?yàn)榇朔椒ň唧w數(shù)據(jù)類型是在調(diào)用該方法的時(shí)候傳入實(shí)參時(shí)才確定具體的數(shù)據(jù)類型的。
?
轉(zhuǎn)載于:https://www.cnblogs.com/shadowdoor/p/6817489.html
總結(jié)
- 上一篇: c#之初见反射
- 下一篇: hadoop常见算法(持续更新)