kotlin 我可以在类中没有同伴对象的情况下添加同伴扩展吗?

j7dteeu8  于 2022-11-30  发布在  Kotlin
关注(0)|答案(1)|浏览(134)

对于下面的代码,我可以将invoke扩展添加到Companion

operator fun MyValue.Companion.invoke(value: Int) =
    MyValue(value.toString())

class MyValue(private val value: String) {
    companion object
    fun print() = println("value = $value")
}

这使我能够称之为

MyValue(1).print()

但是正如你所看到的,原来MyValue并不需要companion object
我想知道MyValue是否没有companion object,即

class MyValue(private val value: String) {
    fun print() = println("value = $value")
}

我是否仍可以创建配套扩展函数?例如:

operator fun MyValue.Companion.invoke(value: Int) =
    MyValue(value.toString())
hujrc8aj

hujrc8aj1#

您可以向类中添加一个接受Int的辅助构造函数,

class MyValue(private val value: String) {
    constructor(value: Int) : this(value.toString())

    fun print() = println("value = $value")
}

现在您可以同时调用MyValue("10").print()MyValue(10).print()

相关问题