泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。
泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。
泛型有三种使用方式,分别为:泛型类、泛型接口、泛型方法。
泛型类:
1.一个泛型类就是拥有一个或者多个类型变量的类。
2.T是形式类型参数,可以随意指定,当类被使用的时候,就会使用具体的实际类型参数。
3.需要注意的是,泛型类只能用在成员变量上,并且只能使用引用类型。
public class test<T>{
private T keyname;
public test(T keyname){
this.keyname = keyname;
}
public T getkey(){
return key;
}
}
这里引用前辈的文章,此处放上链接:
https://blog.csdn.net/s10461/article/details/53941091
泛型接口:
泛型接口与泛型类的定义及使用基本相同。
public interface test<T>{
public T hanshu();
}
泛型方法:
1.所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前。
2.每一个类型参数声明部分包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。
3.类型参数能被用来声明返回值类型,并且能作为泛型方法得到的实际参数类型的占位符。
4.泛型方法体的声明和其他方法一样。注意类型参数只能代表引用型类型,不能是原始类型(像int,double,char的等)。
public <T> T gettest(T a) {
return a;
}
泛型类,是在实例化类的时候指明泛型的具体类型;泛型方法,是在调用方法的时候指明泛型的具体类型 。