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)中的写作平等。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |