Есть ли способ скрыть переменную INSTANCE на одноэлементном объекте Kotlin?
Если у меня есть такой код
object ObjectTest {
@JvmStatic
fun init() {
}
}
можно ли скрыть ObjectTest.INSTANCE
переменная, которую автоматически генерирует Kotlin? Я не хочу, чтобы объект был доступен через экземпляр, и при этом у него не будет никаких методов экземпляра, поэтому INSTANCE
переменная просто загрязняет автозаполнение и может вводить в заблуждение потенциальных пользователей (этот код предназначен для библиотеки, которая будет использоваться другими).
1 ответ
Решение
Да, вы можете сделать это, преобразовав object
в простой файл.
@file:JvmName("ObjectTest")
// maybe a package statement here
fun init() {
// here `init` is public static final void
}
И нет INSTANCE
объект. В Kotlin это функция верхнего уровня, но в Java это класс с именем ObjectTest
с частным конструктором и имеет public static final void
метод называется init
,