Java中的泛型 - zzyoga/JustTest GitHub Wiki

泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。 泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。

特点

泛型的特点只在编译阶段有效,在编译之后会将泛型的相关信息删除,并且在对象进入和离开方法的边界处添加类型检查和类型转换的方法。

泛型的使用

泛型的应用有三种方式:泛型类,泛型接口,泛型方法

泛型类的基本使用

class 类名 <泛型标识> 需要注意的是泛型的类型只能是引用类型,不能是Java中的基本类型;同时不能对泛型类型进行instanceof操作,比如:a instanceof Generic会报错 泛型使用在接口的情况与使用在类上的用法是一致的

##泛型的通配符 上上述例子中,我们使用Generic时Generic和Generic是两种不一样的类型。但是在实际使用的时候,Integer和Number是同一种类型。即:同一种泛型可以对应多个版本,不同版本的泛型实例是不兼容的。 如何解决上述问题就引入了泛型通配符**Generic<?>**此处的?是一种类型实参而不是形参?可以看做所有实例的父类。常用的语法如下:

extends T>:表示T或T的子类 extends String>String类及其子类 super T>:表示T或T的父类 super Set> >:表示任意类型

##泛型方法 泛型类是在实例化类的时候指明泛型的具体实例;泛型方法实在调用方法的时候指明泛型的实例 public T getObject(Class c){ T t = c.newInstance(); return t; } public与返回值T之间的非常重要,可以理解为声明此方法为泛型方法 Class的作用就是指明泛型的具体类型

以上内容来自:https://blog.csdn.net/tyrroo/article/details/80930938

⚠️ **GitHub.com Fallback** ⚠️