Unbounded Wildcards
无界通配类型是通配符?
的特殊用法。比如 List<?>
,我们称之为list of unknown type
(未知类型的列表)。在两种情况下,无界通配符能起很大作用:
如果我们正在编写一个可以使用
Object
类中提供的功能来实现的函数在代码使用泛型类中不依赖于类型参数的函数。比如
List.size
或者List.clear
,实际上Class<?>
经常被用到,因为Class<T>
中的大多数函数都不依赖于T
参考下面这个函数printList
:
该函数的目的是以列表形式打印任何类型,但是该目标是无法实现的————它只能打印Object
实例的列表,而不能打印List<Integer>, List<String>, List<Double>
等等别的类型,因为它们不是List<Object>
的子类型。使用List<?>
编写通用的printList
函数:
对于任何具体类型A
来说,List<A>
是List<?>
的子类型,所以我们可以用printList
打印任何类型的列表:
Last updated
Was this helpful?