夏眠鱼

Oct 17, 2017

Java 泛型-作用

前言

前段时间,有位同事向我请教一个问题:B 是 A 的子类,为什么下面的代码编译不通过呢?

1
2
List<B> bList = new ArrayList<>();
List<A> aList = bList; // 编译错误

抓耳挠腮,印象中我也遇到这个问题啊,忘记怎么解决了-_-||。后来在官网教程中看到有解决方法:

1
2
List<? extends B> bList = new ArrayList<>();
List<? extends A> aList = bList;

泛型是 Java 中一个很强大的特性,学好它事半功倍。我决定将官网的教程翻译下来,当然不是一字一句地翻译,尽量根据自己的理解翻译出来。

为什么使用泛型

简而言之,在定义类、接口和方法时,泛型能让类或接口变成参数,这样的参数又叫类型参数。就像方法声明中的形参一样,类型参数提供了代码复用的通道,不同的是形参接收的是值,类型参数接收的是类型。

使用泛型的好处:

  • 编译时强类型检查
  • 消除类型转化
  • 实现通用算法
OLDER > < NEWER