1

如果我有这样的代码

object ObjectTest {
    @JvmStatic
    fun init() {

    }
}

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

4

1 回答 1

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名为init.

于 2018-05-15T02:56:45.543 回答