Создание публичного экземпляра частного внутреннего класса в Котлине

Почему Kotlin не позволяет создавать публичные экземпляры частных внутренних классов в отличие от Java?

Работает на Java:

public class Test { public A a = new A(); private class A { } } 

Не работает в Котлине (класс должен быть public ):

 class Test { var a = A() // ^ // 'public' property exposes its private type 'A' private inner class A } 

Я бы предположил, потому что на самом деле нет такого случая, когда кажется правильным. Любой код доступа к свойству a не имеет доступа к его типу. Вы не можете назначить его переменной. Test.A myVar Объявление Test.A myVar вне класса Test будет ошибочно. Не допуская этого, код будет вынужден быть более последовательным. Лучше спросить, почему Java разрешит это? Другие языки, такие как быстрые, имеют одинаковое ограничение.

https://kotlinlang.org/docs/reference/visibility-modifiers.html#classes-and-interfaces

состояния:

ПРИМЕЧАНИЕ для пользователей Java: внешний класс не видит частных членов своих внутренних классов в Котлине.

Для вашего использования вы можете использовать вложенные классы

В private inner classes вы можете получить доступ только к членам своего внешнего класса.

Я думаю, что команда kotlin реализовала его таким образом, чтобы можно было уменьшить объем членов в private inner classes чтобы они были доступны только внутри inner class . Я думаю, что это невозможно в Java.