我可以将从Kotlin文件生成的类的默认构造函数设为私有吗?

时间:2017-09-07 02:58:52

标签: kotlin

如果我创建Kotlin文件MyTest.kt

package my.test
fun sayHello(): String = "Hello"

将生成一个类MyTestKt,可以从java访问它,如下所示:

MyTestKt.sayHello() // Returns "Hello"
MyTestKt myTestKt = new MyTestKt() // Instantiate

我想将该构造函数设为私有。那可能吗?如果是这样,怎么样?

我知道我可以使用object创建一个单身人士,这不是我的问题。我知道我可以在里面创建一个companion object的课程,这也不是我的问题。

1 个答案:

答案 0 :(得分:0)

你可以做这样的事情

@file:JvmName("Utils")

package demo

fun foo() {}
class Utils private constructor()

当您尝试从Java调用Utils构造函数时,您将获得“Utils has private access”

UPDATE 使用私有构造函数()时,您无法访问foo函数。 我认为这可能是一个设计缺陷,具有与任何类对象无关的函数。我查看了几个kotlin标准库,我只找到了你想要的扩展函数。在这种情况下,例如,CollectionKt,它无法实例化。