【发布时间】:2017-03-06 14:52:41
【问题描述】:
我可以创建一个仅对集合有用的案例类(阅读HashSet)和一个扩展此案例类以存储有用信息的类吗?
我的意思是这样的:
case class User(id: String)
class UserInfo(id: String) extends User(id) {
var time = 0
var sum = 0
}
我只想使用 UserInfo 将有关用户的信息存储在 HashSet 中,但使用案例类实现以及已经为收集实现的所有有用方法(又名 equals 和 hashCode)
以下 Yuval Itzchakov 评论:
abstract class User(val id: String) {
private var time = 0L
private var sum = 0L
def addTime(_time: Long) = time += _time
def addSum(_sum : Long) = sum += _sum
def getTime() = time
def getSum() = sum
}
case class UserInfo(override val id : String) extends User(id)
private vars 因为我想保证我可以只添加信息(getter 也一样)
【问题讨论】:
-
如何将
User设为abstract class和UserInfo案例类? -
然后我可以在抽象类中添加所有有用的方法吗?
-
是的,你可以。
-
你能检查我的编辑并验证它吗?
-
我建议使
Users 属性不可变,并在每次添加时间或总和时返回一个副本。这样你就根本不需要 getter 和 setter。
标签: scala inheritance case-class