1.1、通用对象方法
toString、equals、hashCode 。
equals()对象相等性:在Kotlin中,==检查对象是否相等,而不是比较引用;===表示比较对象引用
Kotlin中的 is 检查的是Java中的instanceof的模拟,用来检查一个值是否为一个指定的类型。
重写了equals()方法,导致hashCode缺失。
hashCode():如果两个对象相等,他们必须有着相同的hash值。
在hashSet中比较对象先会比较它们的hash值,只有当它们相等时才会去比较真正的值。
1.2、数据类:自动生成通用的方法的实现
data修饰符修饰的类会自动的生成toString、equals 和 hashCode方法。
equals和hashCode方法会将所有在 主构造方法 中声明的属性纳入考虑,即生成的equals方法会检测所有的属性的值是否相同,hashCode方法会返回一个根据所有属性生成的哈希值。(没有在主构造方法中声明的属性将不会加入到相等性检查和哈希值的计算)
为了让使用不可变对象的数据类变得容易,Kotlin编译器为他们生成了copy方法 :在copy的同时还可以修改属性值。
1.3、类委托:使用 “by” 关键字
arrayListOf() 方法会返回一个新的空的ArrayList集合。
calss CountingSet<T> (val innerSet : MutableCollection<T> = HashSet<T>() ) : MutableCollection<T> by innerSet { ... }
网友评论