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

Gab*_*iro 9 kotlin

如果我创建一个Kotlin文件 MyTest.kt

package my.test
fun sayHello(): String = "Hello"
Run Code Online (Sandbox Code Playgroud)

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

MyTestKt.sayHello() // Returns "Hello"
MyTestKt myTestKt = new MyTestKt() // Instantiate
Run Code Online (Sandbox Code Playgroud)

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


我知道我可以用一个object来创建一个单身,这不是我的问题.我知道我可以用companion object内部创建一个类,这也不是我的问题.

Fed*_*ani 1

你可以做这样的事情

@file:JvmName("Utils")

package demo

fun foo() {}
class Utils private constructor()
Run Code Online (Sandbox Code Playgroud)

当您尝试从 Java 调用 Utils 构造函数时,您会收到“Utils 具有私有访问权限”

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