在 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

不,这是不可能的。你不能通过铸造来做到这一点;您只能使用进行转换的显式函数来完成。