1. 程式人生 > >泛型設計中<T> 和<E>的區別

泛型設計中<T> 和<E>的區別

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 
 3
public 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>的區別