泛型设计中<T> 和<E>的区别

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 }
时间: 2024-08-06 16:05:43

泛型设计中<T> 和<E>的区别的相关文章

GUI 设计中 Callback 与 ButtonDownFcn 的区别

Callback 与 ButtonDownFcn 是MATLAB GUI 设计中容易混淆的两个回调函数,在触控按钮(Push Button).静态文本(Static Text).切换按钮(Toggle Button).滑动条(Slider)等控件中均有这两个函数(也叫“属性”).下面仅以 Push Button 为例进行说明. 两函数的调用要涉及的另一个用于使能或禁用控件的属性 Enable,此属性包含三个可选值:{on}.off.inactive,on 为默认属性.当 Enable 为 on

面向对象设计中抽象类与接口的区别

在OOD(面向对象设计)中,经常会用到抽象类或接口,[注:在C++中,没有接口的概念,只有抽象类:而在Java中两者都存在].而在使用过程中,也许会有不少人认为接口和抽象类差不多,然后就想当然地觉得可以相互完全替换.事实上,虽然他们有很多相似点,但也有很大差异. 1.抽象类与接口的出现条件 在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是反过来却不是这样.并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类.抽象类往往用来表征我们

《C++ Primer》 对象、数组、基于对象设计、泛型设计

数组 C++ 不支持数组的抽象 abstraction 也不支持对整个数组的操作我们有时会希望对整个数组进行操作例如把一个数组赋值给另外一个数组对两个数组进行相等比较或者想知道数组的大小 size 例如给出两个数组我们不能用赋值操作符把一个数组拷贝到另一个中去. int array0[ 10 ], array1[ 10 ]; array0 = array1;  // error 数组类型本身没有自我意识它不知道自己的长度我们必须另外记录数组本身的这些信息. 数组和指针的关系: int ia[]

浅谈HTTP中Get与Post的区别_转

可参考:HTTP请求中POST与GET的区别 Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作.到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息. 1.根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的

.NET中struct与class的区别

在.net中的struct与class有很多相似之处,比如可以直接new,对于成员可以直接XX.field,以至于有不少程序员在用时,将其混在一起,分不清有何区别.这两者有何区别呢? 1.类型不同 我们先来看一段代码 static void Main(string[] args) { TypeDemo(); Console.ReadLine(); } // Reference type (because of 'class') class SomeClassRef { public Int32

Dao泛型设计和反射反型

(1)DAO泛型设计:当二哥或多个类中有类似的方法时,可以将这些累死的方法提出到类中,形式一个泛型父类 (2)反射反型:在泛型父类中获取子类的具体类型的过程,叫反射反型 1 package cn.itcast.web.generic; 2 3 import java.lang.reflect.ParameterizedType; 4 import java.lang.reflect.Type; 5 import org.apache.commons.dbutils.QueryRunner; 6

linq中AsEnumerable和AsQueryable的区别

本文导读:用Linq来操作集合的时候会用到AsQueryable()和AsEnumerable(),何时该用AsQueryable()和何时该用AsEnumerable(),或许存在些疑惑.AsQueryable是在数据库中查询再返回数据,AsEnumerable是从数据库读取全部数据再在程序中查询. 在使用LINQ 进行数据集操作时,LINQ 不能直接从数据集对象中查询,因为数据集对象不支持LINQ 查询,所以需要使用AsEnumerable 方法返回一个泛型的对象以支持LINQ 的查询操作.

高性能IO设计中的Reactor模式与Proactor模式

在高性能的IO设计中,有两个比较著名的模式Reactor和Proactor模式,其中Reactor模式用于同步I/O,而Proactor运用于异步I/O操作.在比较这两个模式之前,我们首先要搞明白几个概念.什么是阻塞和非阻塞?什么是同步和异步?同步和异步是针对应用程序和内核的交互而言的,同步指的是用户进程触发IO操作并等待或者轮询的去查看IO操作是否就绪,而异步是指用户进程触发IO操作以后便开始做自己的事情,而当IO操作已经完成的时候会得到IO完成的通知(异步的特点就是通知).而阻塞和非阻塞是针

PPT设计中的用图问题

好的图片对于PPT的重要性,这已是不争的事实.但是PPT设计者往往不是设计出身,因此在一些PPT案例中图片运用不当也是经常可以看见的,介绍一些图片的基本知识,希望有助于大家更好的理解图片,并且更好地在PPT中运用图片. 1.位图和矢量图 它们的区别之一在于电脑记录图片的方式不同.位图是以"点"为基础,一幅位图有很多个点组成图像,所以想要图片清晰,点就要越多,当然图片需要储存的空间也要更多.由于位图的这个特性,当放大图片到一定程度的时候,如果图片的精度不够,就会出现锯齿 . 矢量图则是用