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 文件"(Visibility Modifiers - Kotlin Programming Language)。
在你的例子中,Module1.kt
和 Module2.kt
是分别独立的源文件,尽管它们的名称可能并不一定属于不同的模块:
private class A
。请注意,可见性与标识不同。即使某个class
在其他地方不可见,也并不意味着它不存在。在运行时加载多个具有相同完全限定名称的类声明可能会导致问题。
Module1.kt
和Module2.kt
实际上位于不同的模块中。我已经尝试了多个模块,没有出现重新声明错误。 - hotkey