Lower Bounded Wildcards
在Upper Bounded Wildcards部分中已经展示上界通配符如何通过extends
关键字将未知类型限制成特定类型或该类型的子类型。同样的,lower bounded
(下界)通配将未知类型限制成特定类型或该类型的super type
(超类型)
一个下界通配表示如下:先写一个通配符?
,后面紧跟super
关键字,最后是它的下界:<? super A>
你不能同时指定通配的上界和下界,只能两者选其一
假设我们想写一个函数将Integer
类型的对象添加到列表中,我们希望函数对List<Integer>, List<Number>, List<Object>
(任何能持有Integer
值的)都起作用
为了编写一个函数对于Integer
及其超类型(比如Number
和Object
)的列表都能工作,我们可以指定List<? super Integer>
。List<Integer>
比List<? super Integer>
的限制更大,因为它只接受Integer
类型的列表,而后者接受任何Integer
的超类型。
下面一段代码在列表尾部添加数字1到10:
Guidelines for Wildcard Use部分介绍了何时使用上界通配或者下界通配。
Last updated