在与我的私有不可变类构造函数以及辅助构造函数必须相互调用作为第一条语句的约束进行斗争时,在范围内没有任何其他类的情况下,我似乎被限制为我的实例化使用伴随对象,并且由于我的伴随对象必须访问主构造函数,我需要 private 关键字来定位包括该对象的范围。
现在,我的大脑在名称生成方面很薄弱,我试图通过将我的类放在伴随对象本身中来节省对伴随对象和类的封闭命名空间的需要,这样:
object Group {
private def complexComputeX(z: Int) = z
private def complexComputeY(x: Int, z: Int) = x + z
def apply(z: Int) = {
val x = complexComputeX(z)
val y = complexComputeY(x, z)
new Group(x, y)
}
class Group private[Group](x: Int, y: Int) {
//...
}
}
val x = Group(5)
//...
问题是Group
ofprivate[Group]
不引用对象,但仍然是类(使其多余)。
如何将该构造函数标记为在伴随对象级别可用,但不能在其外部使用?
PS:那个伴生对象已经让我头疼了,我什至宁愿只拥有这个类,在那里限定complexCompute
,几个构造函数实现可能需要......
编辑:好的。就在添加标签时,我碰到了一个响铃的神经元,一个伴生对象可能对类的范围有一些特权。它可以访问其私有部分,因此我可以简单地将对象和类并排放置,而无需专门的封闭范围。但是,我坚持这个问题,既是对处理此类装箱案例范围界定的可能性方式的回应,也是对object Main {object Main {object Main...
在类中只有构造函数而没有任何伴随对象的技术发表评论的机会。