首页 > 解决方案 > Kotlin 中的“包”和“模块”有什么区别?

问题描述

就 Kotlin 而言,包和模块有什么区别?

对于顶级代码的可见性修饰符,该internal修饰符仅允许同一模块内的代码可访问。这使得包和模块看起来是一回事,但我不确定。

这里的问题没有回答我的问题,因为它没有将模块和包置于同一上下文中。

标签: kotlinmodulepackagevisibility

解决方案


简答:包收集相关类,大致对应目录;而模块是更高级别的并且对应于项目和/或编译器运行。

更长的答案:

在 Java 和 Kotlin 中,类被安排在包中。它们是使用package每个文件顶部的指令设置的。(在 Java 中,这完全对应于存储它们的目录结构;这在 Kotlin 中也很常见,尽管不是严格要求。)

它们提供了一种对相关类进行分组的方法:您可以直接引用同一个包中的类(以及顶级函数和字段),而所有其他类都需要import编辑,或者它们的完全限定名称(package .package ... < em>class) 使用。在最新版本的 Java 中,您可以“密封”一个包,这意味着以后没有其他人可以向其添加类。

另一方面,模块对于 Kotlin 来说是新的。它们是一个更高级别的概念,将程序或库中的所有类收集在一起。(一些 IDE 和工具将此称为“项目”或“源集”。)一个模块中的所有文件必须一起编译,并且通常将结果收集到一个 .jar(或 .war)文件中。

一个大系统可能由几个模块组成,但每个模块可能包含数十个包。


推荐阅读