Scala对象相等性判断
在scala中,如何判断两个引⽤变量,是否相等的,是否指向同⼀个对象实例?
1、⾸先,我们来看下scala的AnyRef类
class AnyRef extends Any
类AnyRef是所有引⽤类型的根类。
AnyRef的eq⽅法⽤于检查两个变量是否指向同⼀个对象实例
AnyRef的equals⽅法默认调⽤eq⽅法实现,也就是说,默认情况下,判断两个变量相等,要求必须指向同⼀个对象实例
2、
  1)如果只是根据是否指向同⼀个实例,来判断变量是否相等,那么直接使⽤==操作符即可,默认先判断是否为null,不为null,然后调⽤equals⽅法
  2)根据field重写equals()⽅法,那么通常的建议的是也需要根据相同的field重写hashCode()⽅法,如下
equals()方法
class Apple(val name: String, val price: Double) {
final override def equals(other: Any) = {
val apple = other.asInstanceOf[Apple]
if (apple == null) false
else name == apple.name && price == apple.price
}
final override def hashCode = 13 * name.hashCode + 17 * price.hashCode
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。