📌  相关文章
📜  Java中的未命名模块(1)

📅  最后修改于: 2023-12-03 14:42:58.155000             🧑  作者: Mango

Java中的未命名模块

从Java 9开始,引入了一个新的概念:未命名模块(unnamed module)。在 Java 中,模块化是指将 Java 应用程序分解为小块,每个块都包含一个或多个 Java 包和所需的依赖项。

为什么需要未命名模块?

未命名模块是 Java 9 中的新特性,它的作用是允许开发人员在模块路径之外运行程序,这对于在模块化开发之前开发的项目非常有用,可以适应旧的非模块化代码。

通过未命名模块,可以将以前使用类路径的代码与模块路径兼容。它允许我们在需要时快速地升级到模块化代码,而不会影响到路径之外的代码。

怎样创建未命名模块?

未命名模块是在不包含module-info.java文件的情况下运行的。这样的模块称为“未命名模块”。为了创建未命名模块,只需要将Java类或JAR文件放在类路径中即可。

未命名模块的限制

虽然未命名模块的出现可以帮助我们快速适应模块化,但是在设计时,Java 创建了一个未命名模块的限制。Java 将禁止未命名模块访问模块化代码中的任何包或类型,包括公共、受保护或默认的类型。

1. 条件编译

条件编译在一些不同平台上展现不同的行为,可以通过条件编译指定一些特定平台上的代码行为。但是,这种方法不适用于以未命名模块形式存在的类。因为条件编译的代码实际上是建立在包名之上的。

2. 受保护类型

未命名模块不允许使用受保护类型,该类型只能在所在模块的外部被访问。

3. 依赖

未命名模块不允许使用模块功能,如导出和开放包等。也就是说,未命名模块无法依赖于其他模块,只能依赖于类路径上的其他JAR文件。

总结

未命名模块是 Java 9 中的一个新概念,其作用是允许未经模块化的代码与模块化的代码兼容。Java 对未命名模块附加了一些限制,如禁止未命名模块访问模块化的代码。我们应该仔细地考虑在项目中使用未命名模块。如果我们需要在模块路径之外运行程序,那么未命名模块就是非常有用的。