gpt4 book ai didi

java - 健全性检查 : how are packages and modules are meant to be used together?

转载 作者:行者123 更新时间:2023-11-30 06:28:43 26 4
gpt4 key购买 nike

在 Java 9 之前,我认为包是促进/强制代码模块化和解决命名空间问题的一种方式。包实际上在解决后者方面做得非常糟糕(com.popkernel.myproject.Employee myEmployee = new com.popkernel.myproject.Employee();,呃),所以我主要关注前一个好处.

虽然包在强制模块化方面做得很差,但我发现它们在促进模块化方面非常有效。 “这个类属于哪个包?”一直是一个很有启发性的问题,我很感激 Java 迫使我问自己这个问题。

但是现在 Java 9 模块出现了,它们比包更好地解决了模块化问题。事实上,您可以完全由模块组成一个新项目,其中每个模块包装一个包。

当然,与包相比,模块是很多额外的样板,更不用说与包不同的怪癖,仅通过检查类的 .java 文件是不可能判断类属于哪个模块的。

因此,我接下来一起使用包和模块的计划是:在编写代码时,将相关概念分组到包中。然后,如果我决定要分发我正在处理的代码,请将其形式化为模块。

这是同时利用这些概念的明智方法吗?

最佳答案

Is that a sane way to utilize those concepts in tandem?

是的,有点。尽管您还可以通过模块化代码获得其他好处,例如可靠配置强大封装提高可读性等。

So going forward my plan for using packages and modules together is: as I'm writing code, group related concepts into packages. Then, if I decide I want to distribute the code I'm working on, formalize it into a module.

您可以问自己的一个简单问题是,当您使用模块时,并且将相关概念分组到包中,最终如何对相关包进行分组?

最能符合这个原因的答案是引入了一种新的Java程序组件 - Modules

A module is a named, self-describing collection of code and data. Its code is organized as a set of packages containing types, i.e., Java classes and interfaces; its data includes resources and other kinds of static information.

到目前为止,此类集合主要以 JAR 文件为目标,这些文件被分发为其他文件中的依赖项/库,但它们正在成为遗留格式,并且与模块有很大不同。在我最近对 ​​Java 9 - What is the difference between "Modules" and "JAR" files? 的回答之一中我已尝试详细说明差异。

关于java - 健全性检查 : how are packages and modules are meant to be used together?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46556189/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com