我正在从JLS §5.1.10开始进行捕获转换的概念,并且发现了这个声明:
不会递归地应用捕获转换。
不幸的是,没有任何例子可以解释它的真正含义,而且我很难理解它。我也经历了this post,但这也没有详细介绍递归捕获。有人可以用一些例子来解释吗?
答案 0 :(得分:3)
捕获转换仅适用于第1级通配符。
例如,如果某个对象的类型为List<? extends X>
,我们就知道该对象对List<T>
的某些T
X
也是List<List<?>>
。
但是,如果对象的类型为List<List<T>>
,则对于某些T
,该对象不是List<? extends List<?>>
。
对于List<T>
的子类型T
,List<?>
可以被捕获转换为?
。但是第二个{{1}}无法消除。