java基础07泛型
Java 泛型(generics)是 JDK 5 中引入的一个新特性
泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型
泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数
自定义泛型
泛型除了可以应用在集合上,还可以应用于方法、类、接口、方法上
形式类型参数即泛型字母
常见的命名有:
-
? 表示不确定的 Java 类型
-
T (type) 表示具体的一个Java类型
-
K V (key value) 分别代表Java键值中的Key键 Value值。
-
E (element) 代表Element元素。
通配符:
? 无界通配符:对于不确定或者不关心实际要操作的类型,可以使用无限制通配符(尖括号里一个问号,即 <?> ),表示可以有任何类型。
上界通配符 < ? extends E> 表示该通配符所代表的类型是E类型的子类。
在类型参数中使用 extends 表示这个泛型中的参数必须是 E 或者 E 的子类,这样有两个好处:
-
如果传入的类型不是 E 或者 E 的子类,编译不成功。
-
泛型中可以使用 E 的方法,要不然还得强转成 E 才能使用。
下界通配符 < ? super E> 表示该通配符所代表的类型是E类型的父类。
-
用 super 进行声明,表示参数化的类型可能是所指定的类型,或者是此类型的父类型,直至 Object。
2.泛型方法
-
所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前。
-
每一个类型参数声明部分包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。
-
类型参数能被用来声明返回值类型,并且能作为泛型方法得到的实际参数类型的占位符。
-
泛型方法体的声明和其他方法一样。注意类型参数只能代表引用型类型。
//无参数无返回值
public [static] <E> void 方法名(){
}
或者
//有参数有返回值
public [static] <E> E 方法名(E e)
return e;
}
3.泛型类
-
类名后面添加了类型参数声明部分
-
和泛型方法一样,泛型类的类型参数声明部分也包含一个或多个类型参数,参数间用逗号隔开
-
一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。因为他们接受一个或多个参数,这些类被称为参数化的类或参数化的类型
-

浙公网安备 33010602011771号