Есть ли способ скрыть переменную 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,

Другие вопросы по тегам