kotlin - Kotlin 中的“包”和“模块”有什么区别?
问题描述
就 Kotlin 而言,包和模块有什么区别?
对于顶级代码的可见性修饰符,该internal
修饰符仅允许同一模块内的代码可访问。这使得包和模块看起来是一回事,但我不确定。
这里的问题没有回答我的问题,因为它没有将模块和包置于同一上下文中。
解决方案
简答:包收集相关类,大致对应目录;而模块是更高级别的并且对应于项目和/或编译器运行。
更长的答案:
在 Java 和 Kotlin 中,类被安排在包中。它们是使用package
每个文件顶部的指令设置的。(在 Java 中,这完全对应于存储它们的目录结构;这在 Kotlin 中也很常见,尽管不是严格要求。)
它们提供了一种对相关类进行分组的方法:您可以直接引用同一个包中的类(以及顶级函数和字段),而所有其他类都需要import
编辑,或者它们的完全限定名称(package .package ... < em>class) 使用。在最新版本的 Java 中,您可以“密封”一个包,这意味着以后没有其他人可以向其添加类。
另一方面,模块对于 Kotlin 来说是新的。它们是一个更高级别的概念,将程序或库中的所有类收集在一起。(一些 IDE 和工具将此称为“项目”或“源集”。)一个模块中的所有文件必须一起编译,并且通常将结果收集到一个 .jar(或 .war)文件中。
一个大系统可能由几个模块组成,但每个模块可能包含数十个包。
推荐阅读
- angular - Spring Boot 项目中的多角度应用程序
- html - 菜鸟问题 - 将多个 url 链接到单个 Word是否可能?
- r - 在 R 中使用 Regex 和 stringr 填充字符串的一部分
- aws-lambda - 在 AWS Lambda 错误上返回自定义 http 状态代码
- python - 根据指定的键查找 BST 的深度
- bash - 来自bash的“意外操作员”?
- cmake - 如何在第一次编译到目标中的cmake中添加自定义源文件依赖项
- jestjs - 使用 Yarn 2 / Yarn PnP 时如何调试 Jest 测试
- javascript - 表单提交前的函数调用
- javascript - Node JS:无法从异步 Axios 函数返回数据和导出