Scala:在实施案例类私有

时间:2017-06-07 21:26:35

标签: scala case-class

我明白使用像

这样的东西
case class private A()

new A()#This will be a invalid call as A is private

但我不明白,从实施的角度来看,这在编码时提供了什么优势?因为两次调用A()会产生2个类的实例。如果没有使用这种语法来防止像Java这样的实例化,那么为什么我不想让某人使用new实例化我的类?

1 个答案:

答案 0 :(得分:0)

将case类构造函数标记为private是没用的。正如您所注意到的,案例类使用apply方法获取合成伴随对象,该方法的实现只是对实际构造函数的调用。

Scala案例类只设计为"类+案例修饰符",这意味着在类上工作的所有内容也适用于案例类,其中还包括(无意义)指定访问修饰符的能力构造函数。