Есть ли способ скрыть переменную INSTANCE на одноэлементном объекте Kotlin? - PullRequest
0 голосов
/ 15 мая 2018

Если у меня есть такой код

object ObjectTest {
    @JvmStatic
    fun init() {

    }
}

возможно ли скрыть переменную ObjectTest.INSTANCE, которую автоматически генерирует Kotlin? Я не хочу, чтобы объект был доступен через экземпляр, и при этом у него не будет никаких методов экземпляра, поэтому переменная INSTANCE просто загрязняет автозаполнение и может вводить в заблуждение потенциальных пользователей (этот код предназначен для библиотеки, которая будет использоваться другими). ​​

1 Ответ

0 голосов
/ 15 мая 2018

Да, вы можете сделать это, преобразовав 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.

...