据我所知,以下代码不应compile
,因为在扩展非class
内部static
时我们无法更改封闭的classes
参数。
但是,此代码可以正常工作。
class A<T0, T1> {
class B {
T0 t0;
T1 t1;
}
class C extends A<T1, T0>.B {
T0 t00 = t1;
T1 t11 = t0;
}
}
请帮助我理解为什么会这样或我的理解不正确。
答案 0 :(得分:1)
代码不应该编译,因为我们不能更改封闭类 参数
有一个,您没有更改现有的参数,您只是在继承时修改了绑定到该类的类型。
还有两个,您所更改的类型边界只不过在解释内部类C
与父类B
的参数时颠倒了,两者都是从该边界推断出来的的A<T, R>
。