无法在协同对象中访问Scala类的私有值

时间:2017-10-10 15:50:50

标签: scala class companion-object

我有一个Scala类,它的伴随对象(在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的客户端对象中引发错误。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

你可以像这样使用它:

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)
}

如果要使用它,则必须创建对象。

答案 1 :(得分:1)

你是对的。 Companion对象是 singleton 对象,而类有多个实例。因此,您必须拥有该类的实例才能访问其字段 - 否则,该对象所引用的类num_bits的实例是什么?