Kotlin 中关于可见性修饰符的官方文档说,标记的包级元素private
仅在声明它们的模块中可见。
因此,在中A
声明的类在Module1.kt
中不可见Module2.kt
。但是,如果我尝试添加到Module2.kt
它自己的类中A
,我会收到Redeclaration: A
错误消息。
既然我不能进入Module2.kt
的Module1
班级A
,为什么不能A
免费使用这个名字?
Kotlin 中关于可见性修饰符的官方文档说,标记的包级元素private
仅在声明它们的模块中可见。
因此,在中A
声明的类在Module1.kt
中不可见Module2.kt
。但是,如果我尝试添加到Module2.kt
它自己的类中A
,我会收到Redeclaration: A
错误消息。
既然我不能进入Module2.kt
的Module1
班级A
,为什么不能A
免费使用这个名字?
“模块是一起编译的一组 Kotlin 文件”(可见性修饰符 - Kotlin 编程语言)。
在您的示例中,Module1.kt
并且Module2.kt
是单独的源文件,尽管它们的名称它们不一定是单独模块的一部分:
private class A
.请记住,可见性与身份不同。即使 aclass
在其他地方不可见,也不意味着它不存在。加载具有相同完全限定名称的多个类声明可能(并且很可能会)在运行时导致问题。