Java JLS8。泛型类声明定义

Java JLS8。泛型类声明定义,java,generics,jls,Java,Generics,Jls,对不起,如果我的问题不是新的,但我找不到它 现在我正在阅读jls8,我无法理解其中的一个定义。在一章中,我遇到了这个问题 给定泛型类声明C(n>0),则 参数化类类型C,其中Ti(1≤ 我≤ n) 是一种类型,是所有类型 I,其中I是C的直接上接口,θ是 替换[F1:=T1,…,Fn:=Tn] 如果我理解正确,这个定义意味着我可以分配List=ArrayList,但不能分配,例如List=ArrayList。但我不确定。有人能用更多的细节和例子来解释这一点吗。 提前感谢。您引用的声明是关于超级接

对不起,如果我的问题不是新的,但我找不到它

现在我正在阅读jls8,我无法理解其中的一个定义。在一章中,我遇到了这个问题

给定泛型类声明
C
(n>0),则 参数化类类型
C
,其中Ti(1≤ 我≤ n) 是一种类型,是所有类型
I
,其中
I
C
的直接上接口,θ是 替换[F1:=T1,…,Fn:=Tn]

如果我理解正确,这个定义意味着我可以分配
List=ArrayList
,但不能分配,例如
List=ArrayList
。但我不确定。有人能用更多的细节和例子来解释这一点吗。
提前感谢。

您引用的声明是关于超级接口的声明,而不是关于您可以分配给什么的声明

List
ArrayList
的上下文中,该语句表示
List
ArrayList
的直接上级界面。它没有说明您是否可以将一个分配给另一个

该规范指定是否可以为节中的变量赋值。在其中,它表示允许进行第节中进一步规定的加宽参考转换。我们看到,如果
S
T
的子类型,则允许从
S
T
进行加宽转换

从第节中,我们可以看到很多关于什么是子类型的规则。最终,您会发现一组规则,当它们一起应用时,意味着
T
S
的直接超级接口,然后
S
T
的子类型