java 泛型

四、泛型的通配符

通配符:传入的类型有一个指定的范围,从而可以进行一些特定的操作

泛型中有三种通配符形式:

1.<?>无限制通配符

2.<? extends E> extends 关键字声明了类型的上界,表示参数化的类型可能是所指定的类型,或者是此类型的子类。

3.<? super E> super 关键字声明了类型的下界,表示参数化类型可能是指定类型,或者是此类型的父类。

无限制通配符 < ?>

要使用泛型,但是不确定或者不关心实际要操作的类型,可以使用无限制通配符(尖括号里一个问号,即 <?> ),表示可以持有任何类型。

? 和 Object 不一样,List<?> 表示未知类型的列表,而 List<Object> 表示任意类型的列表。

如传入个 List<String> ,这时 List 的元素类型就是 String,想要往 List 里添加一个 Object,这当然是不可以的。

上界通配符 < ? extends E>

在类型参数中使用 extends 表示这个泛型中的参数必须是 E 或者 E 的子类,这样有两个好处:

  • 如果传入的类型不是 E 或者 E 的子类,编辑不成功

  • 泛型中可以使用 E 的方法,要不然还得强转成 E 才能使用

下界通配符 < ? super E>

在类型参数中使用 super 表示这个泛型中的参数必须是 E 或者 E 的父类

 

posted @ 2021-11-24 14:24  啦啦拉扎尔  阅读(25)  评论(0编辑  收藏  举报