泛型,宽泛的数据类型”
可以接受任意类型(类)的数据。
■泛型定义(类和接口)
类型参数必须是一个合法的标识符,习惯上使用单个大写字母,通常情况下,K 表示键,V 表示值,E 表示异常或错误,T 表示一般意义上的数据类型。
例:class Point<TX, TY>
■泛型变量
泛型类在实例化时必须指出具体的类型,也就是向类型参数。
例:
TX x;
TX y;
■泛型实例化
Point<Integer, Integer> p = new Point<Integer, Integer>();
类型擦除
Point p = new Point();
■泛型方法
class UTest {
public <TX, TY> TX print(TX x, TY y)
public class Point<TX, TY> {
public TX print(TX x, TY y) {
■泛型继承
public <TSB extends T1> T getMax(T array[]){
■泛型通配符(?)
为了避免类型擦除,可以使用通配符(?):
public void print(Point<?, ?> p) {
? extends T 表示泛型的类型参数只能是 T 及其子类,这与定义泛型类或泛型方法时泛型继承类似。
使用通配符(?)不但可以限制类型的上限,还可以限制下限。限制下限使用 super 关键字,例如 <? super TSB> 表示只能接受 TSB 及其父类。
时间: 2024-10-21 01:25:03