泛型是一种代码模板,可以套用各种类型:
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 国际许可协议 进行许可。转载请注明出处!