我可以添加同伴扩展而不首先在类中有同伴对象吗?



对于下面的代码,我可以将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())

你可以在你的类中添加一个接受Int的二级构造函数,

class MyValue(private val value: String) {
constructor(value: Int) : this(value.toString())
fun print() = println("value = $value")
}

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

相关内容

  • 没有找到相关文章

最新更新