我明白使用像
这样的东西case class private A()
new A()#This will be a invalid call as A is private
但我不明白,从实施的角度来看,这在编码时提供了什么优势?因为两次调用A()
会产生2个类的实例。如果没有使用这种语法来防止像Java这样的实例化,那么为什么我不想让某人使用new实例化我的类?
答案 0 :(得分:0)
将case类构造函数标记为private是没用的。正如您所注意到的,案例类使用apply方法获取合成伴随对象,该方法的实现只是对实际构造函数的调用。
Scala案例类只设计为"类+案例修饰符",这意味着在类上工作的所有内容也适用于案例类,其中还包括(无意义)指定访问修饰符的能力构造函数。