在伴随对象中无法访问 Scala class 的私有值

Private value of a Scala class is not accessible in the companion Object

我有一个 Scala class 和它的伴随对象(在 Client.scala 中)如下:

class Client(val key: Int) {
     private val num_bits = 5
}

object Client {
     val count_entries = Math.pow(2, num_bits).toInt
     println(count_entries)
}

但是,它会在 not found: value num_bits 的客户端对象中引发错误。有人可以帮忙吗?

你是对的。 Companion 对象是一个 单例 对象,而 classes 有 多个 实例。因此,您必须拥有 class 的实例才能访问其字段 - 否则,对象中的 num_bits 将引用 class 的哪个实例?

你可以这样使用它:

class Client(val key: Int) {
     private val num_bits = 5
}

object Client {
     val count_entries = Math.pow(2, new Client(0).num_bits)
     println(count_entries)
}

如果你想使用它,你必须创建对象。