捕获转换不是递归应用的?

时间:2013-11-20 18:56:19

标签: java generics

我正在从JLS §5.1.10开始进行捕获转换的概念,并且发现了这个声明:

  

不会递归地应用捕获转换。

不幸的是,没有任何例子可以解释它的真正含义,而且我很难理解它。我也经历了this post,但这也没有详细介绍递归捕获。有人可以用一些例子来解释吗?

1 个答案:

答案 0 :(得分:3)

捕获转换仅适用于第1级通配符。

例如,如果某个对象的类型为List<? extends X>,我们就知道该对象对List<T>的某些T X也是List<List<?>>

但是,如果对象的类型为List<List<T>>,则对于某些T,该对象不是List<? extends List<?>>

对于List<T>的子类型TList<?>可以被捕获转换为?。但是第二个{{1}}无法消除。