通配符详解 extends super

在java泛型中,? 表示通配符,代表未知类型,< ? extends Object>表示上边界限定通配符,< ? super Object>表示下边界限定通配符。

通配符 与 T 的区别

T:作用于模板上,用于将数据类型进行参数化,不能用于实例化对象。 

?:在实例化对象的时候,不确定泛型参数的具体类型时,可以使用通配符进行对象定义。

< T > 等同于 < T extends Object>

< ? > 等同于 < ? extends Object>

上界通配符  ? extends

List sList = ArrayList;

extends 代表Bird 和他的子类都适用。

可以取出,不可以添加,因为不知道添加的具体的子类,所以java不让添加。

下届通配符 ? super

List sList = ArrayList;

super 代表Bird和他的父类都适用。

可以添加,不可以取出。因为子类可以指向父类。添加可行,取出的时候就不知道具体类型了,所以不可取。

你可能感兴趣的:(通配符详解 extends super)