kotlin.Any 类与java.lang.Object 类相互映射,但它本身只定义了三个函数用来覆盖:toString()、equals() 和hashCode()。我们今天就讲讲 equals 中的一些细节。 重载操作符 Any.equals() 函数定义如下: open operator fun equals(other: Any?): Boolean 它重载了 == 操作符
1fun equals(other: Any?): Boolean 激活(invoking)函数 例子 假设你有公司数据模型,每位雇员的列表。 你可以使用get操作符访问方括号中位置。这种实现非常容易: 1classEmployee(val id: Long, val name: String)23classCompany(privateval employees: List) {4operator fun get(pos: Int) =employees[pos]5} ...
equals方法是在Any类中定义的,所以equals方法不需要标记为operator,因为Any类中基本方法已经标记了。但是equals不能实现为扩展方法,因为继承自Any类的实现始终优先于扩展函数。public open class Any { // ... public open operator fun equals(other: Any?): Boolean }...
publicopen operator fun equals(other: Any?): Boolean 所以子类只需要override就可以。 还有一点需要注意的是equals不能以扩展函数的形式实现。这是因为从Any继承来的equals方法优先级高于扩展函数。 在Kotlin中 ===运算符就相当于java中的==,比较的是两个引用是否相等。 !=运算符其实也是调用了equals...
fun main(args: Array<String>) { val b = BaseImpl(1) Agent(b).print() // 输出 123 } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 2.7.2 属性委托 委托属性的实现 class Delegate { operator fun getValue(thisRef: Any?, property: KProperty<*>): String { ...
public open operator fun equals(other: Any?): Boolean public open fun hashCode(): Int public open fun toString(): String } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Kotlin 中的 equals , hashCode , toString 等函数在编译器中都已经实现 , 在不同平台的编译器中实现不同 ; ...
override fun component() { ... } override fun control() { ... } } 继承接口: interface Computer : Machine { fun IODevice() } 可见性修饰符 可见性修饰符用于声明一个类或者接口的可见范围,类似于 Java,Kotlin 中使用public、private和protected关键字作为可见性修饰符。跟 Java 不同的是,Kotlin 默认...
return this.string.equals(string); } } Kotlin文件: val kotlinDemo = KotlinDemo("Ying") javaBean.hello() javaBean.`is`("Joy") //说明: is在Kotlin里是关键字,所以用``符号括起来 Java调用Kotlin 代码语言:txt AI代码解释 Kotlin文件: class KotlinBeanDemo(val string: String) { ...
(i:Int):u8{returnu8(this.list.map{it+i}.toMutableList())}operator funminus(i:Int):u8{returnu8(this.list.map{it-i}.toMutableList())}override funtoString():String{returnlist.toString()}override funhashCode():Int{returnlist.hashCode()}override funequals(other:Any?):Boolean{returnlist==...
例如对单目前缀运算符进行重载,我们只需要为任意类定义名为unaryPlus()、unaryMinus()、not()方法,并以operator修饰该方法即可。 data class Data(val x: Int, val y: Int){ //以成员方法的形式为Data类定义unaryMinus()方法 operator fun unaryMinus(): Data { return Data(-x, -y) } } //以扩展方法...