如果我有这样的代码
object ObjectTest {
@JvmStatic
fun init() {
}
}
是否可以隐藏Kotlin自动生成的
ObjectTest.INSTANCE
变量?我不希望通过实例访问该对象,也不希望它具有任何实例方法,因此INSTANCE
变量仅污染自动完成功能,并可能使潜在用户感到困惑(此代码适用于将由其他人使用的库)。 最佳答案
是的,您可以通过将object
转换为纯文件来实现。
@file:JvmName("ObjectTest")
// maybe a package statement here
fun init() {
// here `init` is public static final void
}
而且没有
INSTANCE
对象。在Kotlin中,这是一个顶级函数,但是在Java中,它是一个名为ObjectTest
的类,带有一个私有(private)构造函数,并且它具有一个称为public static final void
的init
方法。