【问题标题】:What is the difference between "package" and "module" in Kotlin?Kotlin 中的“包”和“模块”有什么区别?
【发布时间】:2020-08-27 00:00:06
【问题描述】:

在 Kotlin 中,包和模块有什么区别?

当涉及到顶级代码的可见性修饰符时,internal 修饰符只允许同一模块内的代码的可访问性。这使得 package 和 module 看起来是一回事,但我不确定。

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

【问题讨论】:

  • 我已经删除了重复的投票,但我仍然认为它令人满意地回答了这个问题。一个模块由一个或多个包组成。 Kotlin 包就像 Java 包一样。

标签: kotlin module package visibility


【解决方案1】:

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

更长的答案:

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

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

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

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

【讨论】:

  • 你能举一个可编译的例子吗?
【解决方案2】:

更具体地说,模块是一组编译在一起的 Kotlin 文件。它位于包裹之上。另一方面,包是对相关类进行分组的文件夹。

【讨论】:

  • 拜托,这怎么能有用:以不同的方式编译不同的文件集
  • @EdgeDev 实际上,这些文件集是构建整个项目或软件所必需的,您不能以不同的方式编译它们,它们是您程序的一部分。
猜你喜欢
  • 2011-04-10
  • 1970-01-01
  • 2011-12-18
  • 2013-06-04
  • 2010-10-02
  • 2023-03-28
  • 2020-03-12
  • 2018-12-22
相关资源
最近更新 更多