Предположим, что у меня есть файл Utils.kt, который будет содержать только некоторые служебные функции, классы, объекты. Предположим, что эти функции используют некоторый общий набор постоянных значений.
Итак, я делаю что-то вроде этого:
package myapp
private val CONST1 = 1
private val CONST2 = 2
public fun function1() {}
public fun function2() {}
К сожалению, Kotlin рассматривает частный как "доступный для всего пакета". Поэтому CONST1 и CONST2 доступны для всех файлов, находящихся в одном пакете. Единственный способ их изолировать - переместить этот файл в отдельный пакет.
Но что, если у меня есть несколько файлов утилиты, подобных этому, каждый со своим собственным набором частных констант. Тогда у меня есть только два варианта: переместите каждый из них в уникальный пакет или сдадитесь, и у вас есть константы из всех доступных.
В любом случае создается беспорядок.
Любые варианты или советы?
( upd:, на самом деле, я должен сказать, что это одна из тех редких вещей, которые беспокоят меня в Котлине, - никоим образом не сделать какой-либо объект локальным файлом (без использования некоторых синтаксических хаков): it либо доступны для всего пакета, либо для всех)
UPD: Этот вопрос теперь устарел (см. принятый ответ)