访问Java特殊行为中的静态内部类-为什么?

时间:2019-01-08 05:14:50

标签: java static inner-classes

据我所知,以下代码不应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;
    }
}

请帮助我理解为什么会这样或我的理解不正确。

1 个答案:

答案 0 :(得分:1)

  

代码不应该编译,因为我们不能更改封闭类   参数

有一个,您没有更改现有的参数,您只是在继承时修改了绑定到该类的类型。

还有两个,您所更改的类型边界只不过在解释内部类C与父类B的参数时颠倒了,两者都是从该边界推断出来的的A<T, R>