Kotlin 中的 "package" 和 "module" 有什么区别?
What is the difference between "package" and "module" in Kotlin?
就Kotlin而言,包和模块有什么区别?
当谈到顶级代码的可见性修饰符时,internal
修饰符只允许同一模块内代码的可访问性。这使得包和模块看起来是同一回事,但我不确定。
问题 没有回答我的问题,因为它没有将模块和包置于同一上下文中。
简答:包收集相关的classes,大致对应目录;而模块的级别更高,对应于项目 and/or 编译器运行。
更长的答案:
在Java和Kotlin中,classes被安排成包。它们是使用每个文件顶部的 package
指令设置的。 (在 Java 中,这与存储它们的目录结构完全对应;这在 Kotlin 中也很常见,尽管不是严格要求的。)
它们提供了一种对相关 classes 进行分组的方法:您可以直接在同一包中引用 classes(以及顶级函数和字段),而所有其他 classes 需要 import
ed,或者它们的完全限定名称 (package.package…class) 使用。在 Java 的最新版本中,您可以“密封”一个包,这意味着以后没有其他人可以向其中添加 classes。
另一方面,模块对于 Kotlin 来说是新的。它们是一个更高层次的概念,将程序或库中的所有 classes 集合在一起。 (一些 IDE 和工具将其称为“项目”或“源集”。)模块中的所有文件必须一起编译,结果通常收集到 .jar(或 .war)文件中。
一个大系统可能由几个模块组成,但每个模块可能包含数十个包。
更具体地说,模块是一组编译在一起的 Kotlin 文件。它在包之上。另一方面,包是将相关 类.
分组的文件夹
就Kotlin而言,包和模块有什么区别?
当谈到顶级代码的可见性修饰符时,internal
修饰符只允许同一模块内代码的可访问性。这使得包和模块看起来是同一回事,但我不确定。
问题
简答:包收集相关的classes,大致对应目录;而模块的级别更高,对应于项目 and/or 编译器运行。
更长的答案:
在Java和Kotlin中,classes被安排成包。它们是使用每个文件顶部的 package
指令设置的。 (在 Java 中,这与存储它们的目录结构完全对应;这在 Kotlin 中也很常见,尽管不是严格要求的。)
它们提供了一种对相关 classes 进行分组的方法:您可以直接在同一包中引用 classes(以及顶级函数和字段),而所有其他 classes 需要 import
ed,或者它们的完全限定名称 (package.package…class) 使用。在 Java 的最新版本中,您可以“密封”一个包,这意味着以后没有其他人可以向其中添加 classes。
另一方面,模块对于 Kotlin 来说是新的。它们是一个更高层次的概念,将程序或库中的所有 classes 集合在一起。 (一些 IDE 和工具将其称为“项目”或“源集”。)模块中的所有文件必须一起编译,结果通常收集到 .jar(或 .war)文件中。
一个大系统可能由几个模块组成,但每个模块可能包含数十个包。
更具体地说,模块是一组编译在一起的 Kotlin 文件。它在包之上。另一方面,包是将相关 类.
分组的文件夹