【发布时间】:2020-02-14 16:56:49
【问题描述】:
等式运算符 (==) 在 Kotlin 中导致编译错误的条件是什么?
当然,比较相同的类型是可以的。
fun compare1(x: Int) = x == 1
比较不同的类型会导致错误:
fun compare2(x: String) = x == 1
运算符 '==' 不能应用于 'String' 和 'Int'
但与泛型类型相比是可以的,尽管 T 可能是字符串:
fun <T> compare3(x: T) = x == 1
【问题讨论】:
-
编译器无法告诉你这是否会失败,如果 T 可以是任何东西,它应该怎么能。但这当然会引发运行时错误。
-
@phaen 如果
equals可以抛出异常,这是一个糟糕的实现:) -
@AlexeyRomanov 我没有说明其他任何内容,只是说编译器无法意识到这一点(正如您所说的,这只是 TA 的错误实现),因此您在编译时不会出错。
-
你说它会引发运行时错误,但它不会。它只会返回 false。
标签: kotlin