我可以使从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的类,这也不是我的问题。

你可以做这样的事情

 @file:JvmName("Utils") package demo fun foo() {} class Utils private constructor() 

当您尝试从Java调用Utils构造函数时,您会看到“Utils has private access”

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