我目前正在学习 Kotlin,遇到了一种令我困惑的行为。这是让我困惑的两行代码:
"".equals(1) // not compile error
"" == 1 // compile error
Run Code Online (Sandbox Code Playgroud)
"".equals(1)- 此行编译并运行没有任何问题。
"" == 1- 但是,该行会导致编译时错误。
据我了解,在 Kotlin 中,==运算符被翻译为对 equals 方法的调用。所以我很好奇为什么第一个语句被认为是有效的,而第二个语句则不是,尽管两者似乎都试图在 String 和 Int 之间进行相同的比较。
有人可以解释一下 Kotlin 中使第一个语句编译并运行而不是第二个语句的底层机制吗?