泛型設計中<T> 和<E>的區別
阿新 • • 發佈:2017-08-03
sta 參數類型 number box args data arr bsp 什麽
Java中泛型有泛型類和泛型方法
-----------------------------------------------
// 泛型方法
用E表示時,意思是element的意思,表示方法中的參數類型
1 package com.wang.practice; 2 3 public class TestGenerics01{ 4 5 /** 6 * 泛型例子 ---泛型方法 7 * @param args 8 */ 9 public static <T> void printArray(T[] array){ 10 for(T element : array) { 11 System.out.printf("%s",element); 12 System.out.printf(" "); 13 } 14 System.out.println(); 15 } 16 17 18 public static void main(String[] args) { 19 Integer[] array1 = {1,2,3,4,5,6}; 20 Double[] array2 = {1.2,3.3,4.3,2.3,2.1};21 Character[] array3 = {‘a‘,‘v‘,‘c‘}; 22 23 printArray(array1); 24 printArray(array2); 25 printArray(array3); 26 27 } 28 29 }
----------------------------------------------
//泛型類
用T表示時,意思是Type的意思,用來表示類的參數類型
1 package com.wang.practice; 2 3public class TestGenerics<T> { 4 5 /** 6 * 泛型類 7 * @param args 8 */ 9 private T t; 10 11 public T getT() { 12 return t; 13 } 14 15 public void setT(T t) { 16 this.t = t; 17 } 18 19 public static void main(String[] args) { 20 TestGenerics<Integer> integerBox = new TestGenerics<>(); 21 TestGenerics<String> stringBox = new TestGenerics<>(); 22 23 integerBox.setT(new Integer(10)); 24 stringBox.setT(new String("kjlkjl")); 25 26 System.out.printf("整型值為:%d\n\n",integerBox.getT());//換行兩行 27 System.out.printf("字符串為:%s",stringBox.getT()); 28 } 29 }
總結:其實不管T還是E,僅僅只是一個習慣而已,用什麽起的作用是一樣的。
另外,舉個例子復習一下泛型通配符:
1 package com.wang.practice; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 /** 7 * 泛型————類型通配符 8 * 類型通配符一般是使用?代替具體的類型"參數"。 9 * 例如 List<?> 在邏輯上是List<String>,List<Integer> 等所有List<具體類型實參>的父類。 10 * @author Administrator 11 */ 12 public class TestGenerics03 { 13 14 /** 15 * @param args 16 */ 17 public static void main(String[] args) { 18 List<String> name = new ArrayList<String>(); 19 List<Integer> age = new ArrayList<Integer>(); 20 List<Number> number = new ArrayList<Number>(); 21 22 name.add("icon"); 23 age.add(18); 24 number.add(314); 25 26 getData(name); 27 getData(age); 28 getData(number); 29 30 } 31 32 public static void getData(List<?> data) { 33 System.out.println("data :" + data.get(0)); 34 } 35 36 }
泛型設計中<T> 和<E>的區別