ele*_*ect 10 operator-overloading kotlin
我上课了
open class Texture
Run Code Online (Sandbox Code Playgroud)
我想定义equals(other: Texture)运算符
operator fun equals(other: Texture) = ...
但我明白了
错误:(129,5)Kotlin:'operator'修饰符不适用于此函数:必须在Any中覆盖''equals()''
这是什么意思?
如果我改变它
operator fun equals(other: Any) = ...
意外覆盖,两个声明具有相同的jvm签名
的equals()操作者的功能中定义Any,因此它应该与兼容签名被重写:其参数other应类型的Any?,并且其返回值应该是Boolean 或它的亚型 (它的最终):
open class Texture {
// ...
override operator fun equals(other: Any?): Boolean { ... }
}
Run Code Online (Sandbox Code Playgroud)
如果没有的override修改,你的功能将与交锋Any::equals,因此意外覆盖.此外,equals()不能是扩展(就像toString()),它不能在接口中覆盖.
在IntelliJ IDEA中,您可以使用Ctrl+ O来覆盖成员,或使用Ctrl+ Insert来生成equals()+hashCode()
| 归档时间: |
|
| 查看次数: |
886 次 |
| 最近记录: |