Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法隐藏Kotlin singleton对象上的实例变量_Kotlin_Kotlin Interop - Fatal编程技术网

有没有办法隐藏Kotlin singleton对象上的实例变量

有没有办法隐藏Kotlin singleton对象上的实例变量,kotlin,kotlin-interop,Kotlin,Kotlin Interop,如果我有这样的代码 object ObjectTest { @JvmStatic fun init() { } } 是否可以隐藏Kotlin自动生成的ObjectTest.INSTANCE变量?我不希望通过实例访问对象,也不希望对象具有任何实例方法,因此instance变量只是污染了autocomplete,可能会让潜在用户感到困惑(此代码用于其他人将使用的库)。是的,您可以这样做,通过将对象转换为普通文件 @file:JvmName("ObjectTest") //

如果我有这样的代码

object ObjectTest {
    @JvmStatic
    fun init() {

    }
}

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

是的,您可以这样做,通过将
对象
转换为普通文件

@file:JvmName("ObjectTest")
// maybe a package statement here
fun init() {
  // here `init` is public static final void
}

没有
实例
对象。在Kotlin中,这是一个顶级函数,但在Java中,它是一个名为
ObjectTest
的类,带有一个私有构造函数,它有一个名为
init
公共静态final void
方法
init

是的,您可以通过将
对象
转换为普通文件来实现

@file:JvmName("ObjectTest")
// maybe a package statement here
fun init() {
  // here `init` is public static final void
}

没有
实例
对象。在Kotlin中,这是一个顶级函数,但在Java中,它是一个名为
ObjectTest
的类,带有一个私有构造函数,它有一个名为
init
公共静态final void
方法,非常感谢!作为后续,对于我的特定用例,如果我想将其方法拆分为多个文件(但仍然可以通过ObjectTest.x对所有方法进行Java访问),如果可以的话,我将如何进行呢?我试图使用
@file:JvmMultifileClass@file:JvmName(“ObjectTest”)
,但这似乎对multifile不起作用。是因为注释只适用于类,而现在它不再是类了吗?是否有一种方法可以实现我在原始问题中提出的要求并拥有一个多文件类?@vanshg
@file:JvmMultifileClass
在多个文件都用
@file:JvmMultifileClass
@file:JvmName(“ObjectTest”)
注释时起作用。这总是有效的。太好了,谢谢你!作为后续,对于我的特定用例,如果我想将其方法拆分为多个文件(但仍然可以通过ObjectTest.x对所有方法进行Java访问),如果可以的话,我将如何进行呢?我试图使用
@file:JvmMultifileClass@file:JvmName(“ObjectTest”)
,但这似乎对multifile不起作用。是因为注释只适用于类,而现在它不再是类了吗?是否有一种方法可以实现我在原始问题中提出的要求并拥有一个多文件类?@vanshg
@file:JvmMultifileClass
在多个文件都用
@file:JvmMultifileClass
@file:JvmName(“ObjectTest”)
注释时起作用。这总是有效的。