无法在不同模块中创建具有相同名称的私有 类

Can't create private classes with same name in different modules

Official docs 关于 Kotlin 中的可见性修饰符表示标记为 private 的包级元素仅在声明它们的模块中可见。

所以在 Module1.kt 中声明的 class AModule2.kt 中不可见。但是如果我尝试添加到 Module2.kt 它自己的 class A 我会得到 Redeclaration: A 错误。

既然我无法在Module2.kt中访问到Module1Aclass,为什么A这个名字不能免费使用?

"A module is a set of Kotlin files compiled together" (Visibility Modifiers - Kotlin Programming Language).

在您的示例中,Module1.ktModule2.kt 是单独的源文件,尽管它们的名称不同,但它们不一定是单独模块的一部分:

  • 如果它们一起编译,那么它们就是同一模块的一部分。
  • 如果它们彼此分开编译,那么它们将成为不同模块的一部分,每个模块都可以定义自己的 private class A

请记住,可见性不同于身份。即使 class 在其他地方不可见,也不意味着它不存在。加载具有相同完全限定名称的多个 class 声明可能(并且很可能会)在 运行 时导致问题。