Доступ к статическому внутреннему классу в Java своеобразного поведения - Почему? - PullRequest
0 голосов
/ 08 января 2019

Насколько я понимаю, следующий код не должен 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 голосов
/ 08 января 2019

код не должен компилироваться, так как мы не можем изменить окружающий класс Параметры

Например, вы не изменили существующие параметры , вы просто изменили тип, связанный с классом, при наследовании.

И, во-вторых, измененная вами граница типа является ничем иным, как обращенной при интерпретации параметров внутреннего класса C по сравнению с родительским классом B, оба из которых выводятся из границы A<T, R> .

...