我有一个非案例类,我试图测试是否平等。它有> 22个字段,所以我不能在Scala 2.10.x中使用案例类:
class Row(
val date: String,
val time: String,
val orderId: String,
val id: String) extends Serializable {
override def toString: String = {
ToStringBuilder.reflectionToString(this);
}
}
我实现==或等于函数的最简单方法是什么,以便我可以测试row1 == row2
?
答案 0 :(得分:0)
在您的示例中,Row不是案例类。它是一个标准类,因此以标准Java方式检查是否相等。
试试这个:
case class Row(date: String,
time: String,
orderId: String,
id: String)
答案 1 :(得分:0)
您别无选择,只能实施自己的equals
因此hashcode
方法(不容易),因为您无法实现case
类。本文应该对您有所帮助:object equality。这些是您需要牢记的因素:
equals
方法hashCode()
canEqual
non-final
方法
醇>
答案 2 :(得分:0)
另一种选择(尽管由于Row不是一个案例类,仍然需要编写逐字段比较代码),因此将提供Scalaz Equal类型类的实例。这具有类型安全的优点。有关更多信息,请查看Learning Scalaz series。 ("类型类102"部分有一个为类型提供Equal实例的例子。)