在 Kotlin 中重载强制转换运算符
Overload cast operator in Kotlin
是否可以在 Kotlin 中重载 cast 运算符?
类似于:
fun MyClass.cast(): String = this.toString()
fun MyClass.cast(): Int = this.hashCode()
fun MyClass.cast(): Map<String, MyClass> = mapOf(this.toString() to this)
然后我可以像这样使用它
val x: String = myClass as String
val y: Int = myClass as Int
val z: Map<String, MyClass> = myClass as Map<String, MyClass>
和
myClass is String // true
myClass is Int // true
myClass is Map<String, MyClass> // true
myClass is List<String> // false
不,这是不可能的。你不能通过铸造来做到这一点;您只能使用进行转换的显式函数来完成。
是否可以在 Kotlin 中重载 cast 运算符?
类似于:
fun MyClass.cast(): String = this.toString()
fun MyClass.cast(): Int = this.hashCode()
fun MyClass.cast(): Map<String, MyClass> = mapOf(this.toString() to this)
然后我可以像这样使用它
val x: String = myClass as String
val y: Int = myClass as Int
val z: Map<String, MyClass> = myClass as Map<String, MyClass>
和
myClass is String // true
myClass is Int // true
myClass is Map<String, MyClass> // true
myClass is List<String> // false
不,这是不可能的。你不能通过铸造来做到这一点;您只能使用进行转换的显式函数来完成。