泛型是一种代码模板,可以套用各种类型:
1 | Cup<T> |
泛型引入
泛型引入
必须把ArrayList
变成一种模板:ArrayList<T>
,代码如下:
1 | public class ArrayList<T> { |
T
可以是任何class。这样一来,我们就实现了:编写一次模版,可以创建任意类型的ArrayList
:
1 | // 创建可以存储String的ArrayList: |
泛型就是定义一种模板,例如ArrayList<T>
,然后在代码中为用到的类创建对应的ArrayList<类型>
:
1 | ArrayList<String> strList = new ArrayList<String>(); |
向上转型
在Java标准库中的ArrayList<T>
实现了List<T>
接口,它可以向上转型为List<T>
:
1 | public class ArrayList<T> implements List<T> { |
类型ArrayList<T>
可以向上转型为List<T>
。
注意:不能把ArrayList<Integer>
向上转型为ArrayList<Number>
或List<Number>
。
ArrayList
小结
泛型就是编写模板代码来适应任意类型;
泛型的好处是使用时不必对类型进行强制转换,它通过编译器对类型进行检查;
泛型的继承关系:可以把
ArrayList<Integer>
向上转型为List<Integer>
(T
不能变!),但不能把ArrayList<Integer>
向上转型为ArrayList<Number>
(T
不能变成父类)。
发布时间: 2019-08-07
最后更新: 2019-10-07
本文链接: https://juoyo.github.io/posts/a1b3abe2.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!