【发布时间】:2017-08-06 19:38:31
【问题描述】:
JLS 的 section 描述了 ST(U) 是什么,其中 U 是一个类型:
令 ST(Ui) 为 Ui 的超类型集。
下面几行,在同一部分,有一个例子:
例如,给定 List
和 List
ST(List
【问题讨论】:
-
是的,这看起来像是 JLS 部分的错误。
-
想一想,
List及其所有超类型也应该在ST(List<String>)中,因为section 4.10.2,List是List<String>的直接超类型。这个例子真的不行。 -
List 不在 ST(List
) 中,因为...它在 EST(List ) 中,EST 是已擦除的超类型集。 -
不,它在 EST 中的事实并不排除它在 ST 中。
-
请注意,参数化类型的超类型集通常是无限的。例如,
List<String>具有超类型List<? extends Comparable<String>>,而超类型又具有超类型List<? extends Comparable<? extends Comparable<String>>>,依此类推。 (我在some utility function for supertype computations 中偶然发现了这一点)。 JLS 中的示例可能仅用于说明目的。
标签: java type-inference jls