我遇到了以下内容:
我理解这一点:
在类的类型参数部分中,如果S是T的边界,则类型变量T直接依赖于类型变量S,而如果T直接依赖于S或T直接取决于S,则T依赖于S.类型变量U依赖于S(递归使用此定义)。
但是
如果类的类型参数部分中的类型变量依赖于自身,则是编译时错误。
这是什么意思? Reference答案 0 :(得分:6)
该陈述的含义是类型参数变量不能依赖于它自身。不允许使用以下代码:
class Generic<T extends T> {
}
这里T
是一个类型参数变量,它不能依赖于它自己(直接或不完整)。另一方面,允许使用以下代码:
public class GenericRecursive<T extends GenericRecursive<T>> {
}
答案 1 :(得分:2)
如果类类型中的类型变量,则是编译时错误 参数部分取决于它自己。
参数不能从自身派生。
例如,它不合法:
class YourClass<S extends S> {
}
但你可能不会使用它,因为它没有任何意义。
你可以这样做:
class YourClass<T extends S, S extends T> {
}
它也不会编译,因为T
取决于依赖于它自己的S
(周期)