本文概览:介绍了泛型定义和使用,以及通配符的作用

1 泛型

泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,即就是将类型参数化,,也就是说所操作的数据类型被指定为一个参数(之前的参数化都是针对一个值变量,此时是针对类型)。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。

1.1 泛型类

1.1.1 泛型具体类

代码如下:

测试类如下

1.1.2 泛型接口

1 、定义

2、使用

如下代码

3、问题

假设现在使用时,没有指定具体类型,如下

此时就默认PR都取Object类型,和下面写法相同

1.2 泛型函数

1、定义

2、使用

这里不需要写成GenericMethod.<String>output(test),编译器会自动识别类型的,

通配符

2.1 引入

当我们定义了一个泛型类

假设有一个Father类和它的子类Son。那么Pari<Father>Pari<Son>是没有继承关系。使用通配符可以实现这个,即定义一个Pair<? extends Father> 类,那么此时Pair<Son>就是其子类,此时Pair<? extends Father>Pair<Son>存在了继承关系。 所以通配符是为了实现泛型类的具体类的继承关系。

2.2 一个Demo

1 、当返回类型是List<? extends Father>

2、当返回类型是List<T extends Father>,如果写成如下代码,此时编译器就会报错

3、结论

通配符可以实现了模板类List的两个具体类(List<Son>List<? extedns Fatcher>)的继承关系,继承关系最大作用就是实现多态。如List<? extends Father>类作为返回类型时,假设Son1Son2Son3都是Father的子类,那么List<Son1>类型、List<Son2>List<Son2>都是可以作为返回类型的,实现了多态。

(全文完)

分类&标签

发表评论

电子邮件地址不会被公开。 必填项已用*标注