对于下面的代码,我可以将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())
1条答案
按热度按时间hujrc8aj1#
您可以向类中添加一个接受Int的辅助构造函数,
现在您可以同时调用
MyValue("10").print()
和MyValue(10).print()