kotlin - 当其他成员可以访问时,为什么不能访问 Kotlin 伴生对象内的对象 "statically"?

标签 kotlin

给定一个 Kotlin 伴侣对象

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

为什么是 Companion需要访问 A.C当它不适合 ab() ?

最佳答案

这用于消除在伴随对象中声明的对象与在类中直接声明的对象的歧义。

请注意,类中定义的属性和函数与来自伴生对象的属性和函数没有歧义,因为前者只能在类的实例上调用。但是可以使用类名引用嵌套对象:

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

println(A.C.d)

关于kotlin - 当其他成员可以访问时,为什么不能访问 Kotlin 伴生对象内的对象 "statically"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46561324/

相关文章:

java - Android - 更改所有 Android 版本的应用程序语言

android - Google SMS Retriever API 不检索短信

kotlin 中的 Android 应用程序不断崩溃

android - 华为广告工具包横幅广告返回错误代码1

android - Kotlin-如何从日历中获取日期为 "dd"和月份为 "mm"?

android - Kotlin fragment

android - Broadcast Receiver 只接收一次信息

用于 UI 的 Qt 和用于应用程序逻辑的 Kotlin

java - Android:如何以编程方式启用/禁用 Wifi 或 Internet 连接

从 Map::getOrElse 返回的 Kotlin mutableList() 不公开 add()