在 Java 特殊行为中访问静态内部 class - 为什么?
Accessing static inner class in Java peculiar bhavior - Why?
根据我的理解,以下代码不应 compile
,因为在扩展非 static
内部 classes
.
时我们无法更改封闭的 class
参数
但是,这段代码工作正常。
class A<T0, T1> {
class B {
T0 t0;
T1 t1;
}
class C extends A<T1, T0>.B {
T0 t00 = t1;
T1 t11 = t0;
}
}
请帮我理解为什么会这样或者我的理解不正确。
code should not compile as we can not change enclosing class
parameters
首先,您没有更改现有的参数,您只是修改了继承时绑定到class的类型。
第二,在解释内部 class C
与父 class [=11] 的参数时,您更改的类型绑定只不过是相反的=] 两者都是从 A<T, R>
.
的边界推断出来的
根据我的理解,以下代码不应 compile
,因为在扩展非 static
内部 classes
.
class
参数
但是,这段代码工作正常。
class A<T0, T1> {
class B {
T0 t0;
T1 t1;
}
class C extends A<T1, T0>.B {
T0 t00 = t1;
T1 t11 = t0;
}
}
请帮我理解为什么会这样或者我的理解不正确。
code should not compile as we can not change enclosing class parameters
首先,您没有更改现有的参数,您只是修改了继承时绑定到class的类型。
第二,在解释内部 class C
与父 class [=11] 的参数时,您更改的类型绑定只不过是相反的=] 两者都是从 A<T, R>
.