泛型(Java9)

作用

编译时进行类型检查。

实质

允许在定义接口、类、方法时使用类型形参,这个类型形参(或叫泛型)将在声明变量、创建对象、调用方法时动态地指定(即传入实际类型参数,也可以称为类型实参)。

运用

定义泛型接口、类:

泛型形参在整个接口、类体内可当成类型使用,几乎所有可使用普通类型的地方都可以使用这种泛型形参。

注意:

不管为泛型形参传入哪一种类型实参,对于Java来说,它们依然被当成同一个类来处理,在内存中也只占用一块内存空间,因此在静态方法、静态初始化块或者静态变量的声明和初始化中不允许使用泛型类型形参。
由于系统不会真正生成泛型类,所以instanceof运算后不能使用泛型类。
Java的数组支持型变,但Java集合并不支持型变。

通配符(?):

设定类型通配符的上限:参数类型:?extends 类型
特点:只出不进
设定类型通配符的下限:参数类型:? super 类型
特点:只进不出

泛型方法:

修饰符<T,S> 返回值类型 方法名(新参列表)
{
//方法体
}

泛型方法和类型通配符的选择:

泛型方法允许泛型形参被用来表示方法的一个或多个参数之间的类型依赖关系,或者方法返回值与参数之间的类型依赖关系。如果没有这样的类型依赖关系,就不应该使用泛型方法。

泛型构造器:

一旦定义了泛型构造器,接下来在调用构造器时,就不仅可以让Java根据数据参数的类型来“推断”泛型形参的类型,而且程序员可以显式的为构造器中的泛型形参指定实际的类型。

类型推断:

可通过调用方法的上下文来推断泛型的目标类型。
可在方法调用链中,将推断得到的泛型传递到最后一个方法。

擦除:

当把一个具有泛型信息的对象赋给另一个没有泛型信息的对象时,所有在尖括号之间的类型信息都将被扔掉。

泛型与数组:

数组元素的类型不能包含泛型变量或泛型形参,除非是无上限的类型通配符。但可以声明元素类型包含泛型变量或泛型形参的数组。
创建类型是泛型类型的数组对象也将导致编译错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值