2017-10-04 2 views
2

はKotlinのコンパニオンオブジェクトKotlinコンパニオンオブジェクト内のオブジェクトに、他のメンバがアクセスできるときに「静的に」アクセスできないのはなぜですか?

なぜ Companionはそれが ab()のためではないとき A.Cへのアクセスに必要な
class A { 
    companion object { 
     val a = 0 
     fun b() = 1 
     object C { 
      val d = 0 
     } 
    } 
} 

fun main(args: Array<String>) { 
    println(A.a) 
    println(A.b()) 
    println(A.C.d) // doesn't compile 
    println(A.Companion.C.d) 
} 

を考えると?

+0

あなたは '@ JvmStatic' – EpicPandaForce

答えて

2

これは、コンパニオンオブジェクトで宣言されたオブジェクトを、クラス内で直接宣言されたオブジェクトから曖昧さを排除することを目的としています。

クラス内で定義されているプロパティと関数は、コンパニオンオブジェクトからのプロパティや関数とあいまいではないことに注意してください。しかし、ネストされたオブジェクトは、クラス名で参照することができます。

class A { 
    object C { 
     val d = 0 
    } 
} 

println(A.C.d) 
+0

最後は(この点では入れ子になったクラスのように振る舞うオブジェクト)私は逃した部分だったことを試すことができます。 –

関連する問題