什么是Kotlin模块?

什么是Kotlin模块?,kotlin,Kotlin,在Kotlin文档中,他们提到了某种类型的模块,例如在中,用于内部修饰符 但是,我找不到术语模块本身的任何定义。那么模块是什么意思呢 模块是一起编译的一组Kotlin源: 智能思维模块 Maven项目 梯度源集 通过一次Ant任务调用编译的一组文件 这与“可见性修改器”相同。:) 从Kotlin的角度来看,模块是一组一起编译的Kotlin文件: IntelliJ IDEA模块 Maven项目 梯度源集 通过调用Ant任务编译的一组文件 这是hotkey的,但我想补充这个答案 ,Kotli

在Kotlin文档中,他们提到了某种类型的模块,例如在中,用于
内部
修饰符

但是,我找不到术语模块本身的任何定义。那么模块是什么意思呢

模块是一起编译的一组Kotlin源:

  • 智能思维模块
  • Maven项目
  • 梯度源集
  • 通过一次Ant任务调用编译的一组文件
这与“可见性修改器”相同。:)

从Kotlin的角度来看,模块是一组一起编译的Kotlin文件:

  • IntelliJ IDEA模块
  • Maven项目
  • 梯度源集
  • 通过调用
    Ant任务编译的一组文件
这是hotkey的,但我想补充这个答案

,Kotlin的首席语言设计师:

Kotlin模块将一对一映射到IntelliJ的模块(iml文件)

根据IntelliJ的说法:

模块允许您在一个应用程序中组合多种技术和框架。在IntelliJ IDEA中,您可以为一个项目创建多个模块,每个模块都可以负责自己的框架

当涉及Maven项目或命令行编译时:

默认情况下,每个编译器运行都是一个单独的模块:所有二进制依赖项都将被视为不在当前正在编译的模块中

此外,Gradle源集也是一个模块,除了
test
源集可以访问main的内部声明


这意味着,如果在Gradle配置中有不同的构建风格,导致不同的源集,例如,对于生产和调试版本,则一个源集中的内部类将无法用于另一个源集中。

能否更具体一点,这是kotlin文档中的内容,但这到底意味着什么。对于一个android项目,这是否意味着整个android应用程序都可以访问一些声明为内部的东西?@s-hunter,不,不会。Android项目是用Gradle构建的,因此,
内部
可见性意味着Gradle源集(除了测试源集可以从它们测试的源集访问内部)。如果整个android项目只包含一个gradle源代码集,在大多数情况下,它是用于一个简单的应用程序,那么内部意味着整个android项目都可以访问它。我说的对吗?是的,这基本上是正确的:
内部
声明不能在其他Kotlin模块中使用,但是,由于JVM方面缺乏支持,它仍然暴露在非Kotlin代码中(例如,可以在依赖于JAR的Java代码中使用)。因此,JVM在运行时不会像私有/受保护/包私有声明那样检查访问,而是由Kotlin编译器在使用站点检查访问?