mac_girl

java范型的理解

参考:https://www.cnblogs.com/coprince/p/8603492.html
范型的定义
参数化类型,一般用于类、接口、方法,称为范型类、范型接口、范型方法。

范型的特性
只在编译阶段有效。在编译过程中,正确检验泛型结果后,会将泛型的相关信息擦出,并且在对象进入和离开方法的边界处添加类型检查和类型转换的方法,泛型信息不会进入到运行时阶段。

范型类
声明范型类
`puclic Generic {
private T key;

public Generic(T key) { //泛型构造方法形参key的类型也为T,T的类型由外部指定
    this.key = key;
}

public T getKey(){ //泛型方法getKey的返回值类型为T,T的类型由外部指定
    return key;
}

}`
注意:1.泛型的类型参数只能是类类型(包括自定义类),不能是简单类型
2.不能对确切的泛型类型使用instanceof操作

范型接口
public Interface Generator<T> { public T test(); }
注意:
当实现泛型接口的类,未传入泛型实参时,实现范型接口的类也必须将范型的声明一起加到类中
当实现泛型接口的类,传入泛型实参时,不用将范型的声明一起加到类中,T都要替换成传入的实参类型。

范型方法
范型类和范型方法的区别:
泛型类,是在实例化类的时候指明泛型的具体类型;泛型方法,是在调用方法的时候指明泛型的具体类型
public <T> genericMethod(Class<T> tClass){ }
注意:1.只有声明了的方法才是泛型方法
2.表明该方法将使用泛型类型T,此时才可以在方法中使用泛型类型T
范型方法和可变参数
可变参数:方法定义中可以使用个数不确定的参数,对于同一方法可以使用不同个数的参数调用

类型通配符
?: 是一个类型实参,同与Integer、String是实际的类型,代表所有类型的父类
作用:当具体类型不确定的时候,用 ? 通配符来表未知类型。

范型上下边界
类型实参只准传入某种类型的父类或某种类型的子类
上边界: 传入的类型实参必须是指定类型的子类型
Generic<? extends Number>
下边界: 传入的类型实参必须是指定类型的父类型
Generic<? super Number>

范型数组

posted on 2021-01-22 17:16  宇宙美少女  阅读(453)  评论(0编辑  收藏  举报

导航