これはちょうどこのように動作するはずです - import Inner._
を使用すると、一貫した動作です。
Javaの静的メンバーと同様の動作を実現するには、通常、コンパニオンオブジェクトが必要です。 Scalaの方法は、コンパニオンクラスのプライベート/保護されたmemebersはそれからアクセスすることができるという利点と、離れたシングルトンオブジェクトへのすべての静的メンバーを移動することです:
object Outer {
object Inner {
def print(inner: Inner) = inner.B // compiles!
}
class Inner {
private val B = "B"
}
}
あなたはクラスのファクトリとしてコンパニオンオブジェクトを使用することができますプライベートコンストラクタで:コンパニオンオブジェクトのメンバーがクラスにインポートされるかどう
scala> object Outer {
|
| object Inner {
| def newInstance = new Inner()
| }
| class Inner private() {
| private val B = "B"
| }
| }
defined module Outer
scala> Outer.Inner.newInstance
res1: Outer.Inner = [email protected]
scala> new Outer.Inner
<console>:7: error: constructor Inner cannot be accessed in object $iw
new Outer.Inner
^
私はここにもう一度(この事を忘れて)この問題が新人にとってどれほど重要かを示しています。私は、「外」がその質問に何の役割も果たしていないと思う。それがなくても全く同じです。これを聞いてくれてありがとう! – akauppi