我定义了以下代码(在带有 Scala 2.10 的 Scala IDE/Scala 工作表中):
object WorkSheet1 {
object A {
def apply(s: String, huh: Boolean = false): A = A(s)
}
case class A (s: String)
//case class A private (s: String)
val a = A("Oh, Hai")
}
我成功收到以下输出:
a : public_domain.WorkSheet1.A = A(哦,海)
但是,当我注释掉现有的case class A (s: String)
并取消注释另一个(包含“私有”)时,我收到以下编译器错误:“无法在对象 WorkSheet1 中访问类 A 中的构造函数 A”。
据我了解,伴生对象可以访问其伴生类的所有私有部分。呵呵。呃……不过,说真的。是什么赋予了?