我想知道为什么班级不能访问同伴对象的字段?
class MyClass {
println(val1) // not found, why?
}
object MyClass {
val val1 = "str"
}
应该,它应该可以访问object MyClass
的私有字段。
答案 0 :(得分:10)
您可以使用MyClass.val1
代替val1
来完成此操作。
我做过的客人表示可以从任何地方访问伴侣对象成员(使用默认修饰符)。
答案 1 :(得分:5)
默认情况下,类“应该”可以访问其伴随对象字段,这是值得商榷的。考虑将伴随对象的apply
方法用作工厂并且对象本身具有apply
方法来执行不同操作的并非罕见情况。阅读代码并知道哪种方法意味着它会让人感到困惑! Roland Ewald对引用http://www.scala-lang.org/old/node/2411.html#comment-8493的另一个答案做了评论,总结得很好:
“问题是,如果你想要的话,将内容导入你的命名空间要容易得多,如果不这样做的话,就不会轻易导入。而且我个人已经有足够的阴影问题了。”
这给出了答案。因此使用import
:
class MyClass {
import MyClass._
println(val1) // Should see it now!
}
object MyClass {
val val1 = "str"
}