我有一些包含一些字段而没有逻辑的简单类。将它们作为案例类而不是类实现是一个好主意吗?
我的意思是,
的缺点是什么case class Point(x: Int, y: Int)
与
相比class Point(xc: Int, yc: Int) {
val x: Int = xc
val y: Int = yc
}
如果我希望Point
是一个没有方法的不可变数据容器?
答案 0 :(得分:6)
这正是为类设计的案例。缺点是微不足道*,还有一些好处(自动equals
,hashCode
,toString
,copy
,apply
,unapply
,产品方法,等)。
顺便说一句,您的班级示例可以简化为class Point(val x: Int, val y: Int)
另请参阅:How does a case class differ from a normal class?
答案 1 :(得分:4)
拒绝使用案例类?最多的边际开销,基本上没有。
定义case class Point(x : Int, y : Int)
但会为您提供apply
,unapply
,copy
,toString
,hashCode
和" getter&# 34;所有方法都在一行内。如上定义的class Point
没有。