?表示不确定的类型
五、使用泛型时的注意事项
============
1、在定义一个泛型类时,在“<>”之间定义形式类型参数,例如:“class TestGen<K,V>”,其中“K”,“V”不代表值,而是表示类型。
2、实例化泛型对象时,一定要在类名后面指定类型参数的值(类型),一共要有两次书写。
3、使用泛型时,泛型类型必须为引用数据类型,不能为基本数据类型,Java中的普通方法,构造方法,静态方法中都可以使用泛型,方法使用泛型之前必须先对泛型进行声明,可以使用任意字母,一般都要大写。
4、不可以定义泛型数组。
5、在static方法中不可以使用泛型,泛型变量也不可以用static关键字来修饰。
6、根据同一个泛型类衍生出来的多个类之间没有任何关系,不可以互相赋值。
7、泛型只在编译器有效
8、instanceof不允许存在泛型参数
以下代码不能通过编译,原因一样,泛型类型被擦除了
六、泛型的使用
=======
泛型有三种使用方式,分别为:泛型类、泛型接口、泛型方法
1、泛型类
package javase.genericity;
//此处T可以随便写为任意标识,常见的如T、E、K、V等形式的参数常用于表示泛型
//在实例化泛型类时,必须指定T的具体类型
public class Generic {
//key这个成员变量的类型为T,T的类型由外部指定
private T key;
//泛型构造方法形参key的类型也为T,T的类型由外部指定
public Generic(T key){
this.key = key;
}
//泛型方法getKey的返回值类型为T,T的类型由外部指定
public T getKey(){
return key;
}
public static void main(String[] args) {
//泛型的类型参数只能是类类型(包括自定义类),不能是简单类型
//传入的实参类型需与泛型的类型参数类型相同,即为Integer.
Generic genericInteger = new Generic(123456);
//传入的实参类型需与泛型的类型参数类型相同,即为String.
Generic genericString = new Generic(“江疏影”);
System.out.println("泛型测试,key is "+genericInteger.getKey());
System.out.println("泛型测试,key is "+genericString.getKey());
}
}