【发布时间】:2020-06-08 21:36:24
【问题描述】:
当通过伴生对象的工厂方法创建的实例比较对象相等性时,会为假。
class Companion(s: String)
object Companion {
def apply(s: String): Companion = {
new Companion(s)
}
}
val c1 = Companion("foo")
val c2 = Companion("foo")
println(c1 == c2) // false
但是,当案例类创建相同的情况时,为什么会是这样呢?
case class Case(s: String)
val c1 = Case("foo")
val c2 = Case("foo")
println(c1 == c2) // true
这两者有什么区别?
【问题讨论】:
-
==不是 Scala 中的引用相等性。 -
如果你真的想要引用相等使用
a eq b。
标签: scala equality case-class companion-object