Поддерживает ли Kotlin пакет защищенной видимости? - PullRequest
0 голосов
/ 04 ноября 2019

В Java package protected доступ был очень удобен, потому что он позволял писать модульный код. Это невозможно с Kotlin, если вы не объедините все эти классы в один файл и не поместите Private во все из них или не внедрите Internal в отдельный Module. Но мне не нравятся эти решения. Помещение большого количества материала в один файл не читается, и другая проблема заключается в том, что вы не можете протестировать любой Method / Class, который не Public. Есть ли другое решение?

1 Ответ

0 голосов
/ 04 ноября 2019

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

Вы должны использовать internal в Kotlin. Это ограничивает доступ к тому же модулю , логической единице файлов, скомпилированных вместе с артефактом.

Мотивация не предоставлять спецификатор видимости с защитой пакета следующая: изразработчик Kotlin :

Мотивация отсутствия защищенного доступа к пакетам очень проста: она не обеспечивает реальной инкапсуляции. Любой другой модуль в системе может определять классы в том же пакете, что и ваш сложный независимый компонент, и получать полный доступ к его внутренним компонентам. С другой стороны, классы с внутренней видимостью не могут быть доступны из любого модуля, кроме того, где они определены.

И вы определенно можете тестировать методы / классы, которые имеют внутренний доступ: тесты модуля имеют полныйдоступ к внутренним объявлениям этого модуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...