我不确定我是否正确:java.base是来自所有其他模块的底层基本模块,并包含它们的所有基本内容,就像类中的超类一样。java.se是包含整个JDK的模块,就像一个子类(包含基本功能和更具体的东西)。
发布于 2022-03-20 01:29:13
java.base是基本模块;其他每个模块都隐式或显式地依赖于它:
如果模块的声明不表示对
java.base模块的依赖.然后,该模块有一个隐式声明的依赖于java.base模块。
java.se“定义Java平台的API”(每个文档)。大概是(?)包含所有在模块化之前都存在于Java中的类,除了现在在不同的模块中分离,例如java.desktop或java.sql。它不包括特定于JDK的模块(如jdk.javadoc)。Java运行时可能不一定提供所有这些模块;例如,您可以使用jlink创建一个只包含所需模块(至少java.base)的Java运行时。
Java规范还有助于理解模块的内容及其关系:
在这种情况下,您与类(模块java.base)及其子类(模块java.se)进行比较是可行的,因为java.se的作用有点像一个“聚合器”模块,它本身不包含或导出任何包,但只有通过requires transitive间接导出。有关java.se模块存在的原因,请参见java.se。虽然通常您不会声明依赖于java.se,因为这违背了定制的小型运行时映像的目的;相反,您只会声明对您真正需要的特定模块的依赖关系,例如java.logging。
但是,这样的聚合器模块并不常见。在大多数情况下,模块将用于分组相关的包,并限制对内部实现的访问。但是,在这些情况下,由一个模块定义的服务以及正在实现的相应服务提供者和由另一个模块声明类似于您的类推。
https://stackoverflow.com/questions/71482750
复制相似问题