加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala类和案例类==比较

发布时间:2020-12-16 09:35:28 所属栏目:安全 来源:网络整理
导读:我不太明白为什么当我们比较两个实例与一个类的相同属性,而不会覆盖它将给出一个false的equals方法。但是当我们比较一个case类的两个实例时它会给出一个真实的。例如 class A(val name: String,val id: Int) case class B(name: String,id: Int) object Tes
我不太明白为什么当我们比较两个实例与一个类的相同属性,而不会覆盖它将给出一个false的equals方法。但是当我们比较一个case类的两个实例时它会给出一个真实的。例如

class A(val name: String,val id: Int)
 case class B(name: String,id: Int)

 object Test {
    val a1 = new A('a',1)
    val a2 = new A('a',1)
    println(a1 == a2)   //this returns false

    var b1 = B('b',1)
    var b2 = B('b',1)
    println(b1 == b2)   //this returns true

 }

有人可以解释为什么吗?

解决方法

一个 case class implements the equals方法为你而一个班没有。因此,当比较实现为类的两个对象未被实现为大小写类时,您所比较的是对象的内存地址。

这是真正的问题,当你必须处理在java中的平等。请参阅this Artima博客文章,其中包括由Bill Venners,Martin Odersky和Lex Spoon撰写的Java(和Scala)中的写作平等。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读