我可以使从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
,它不能被实例化。