有没有办法隐藏Kotlin单例对象上的INSTANCE变量

时间:2018-05-14 22:14:40

标签: kotlin kotlin-interop

如果我有这样的代码

object ObjectTest {
    @JvmStatic
    fun init() {

    }
}

是否可以隐藏Kotlin自动生成的ObjectTest.INSTANCE变量?我不希望通过实例访问该对象,也不希望它有任何实例方法,因此INSTANCE变量只是污染自动完成并且可能会让潜在用户感到困惑(此代码适用于将要使用的库)被别人消费。)

1 个答案:

答案 0 :(得分:4)

是的,您可以通过将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的{​​{1}}方法。