Java模块系统:深入解析与应用
1. 可选依赖
模块系统在编译时和运行时都会验证模块依赖。有时候,你可能希望某个模块依赖在编译时是必需的,但在运行时是可选的。
例如,你开发的一个库,如果在运行时有特定模块可用,它的性能会更好;否则,它会回退到另一个模块,性能会有所下降。不过,该库是针对可选模块进行编译的,并且会确保在可选模块不可用时,依赖该可选模块的代码不会执行。
另一个例子是导出注解包的模块。Java运行时会忽略不存在的注解类型,但在启动时会验证模块依赖。如果运行时缺少该模块,应用程序将无法启动。因此,必须将对包含注解包的模块的依赖声明为可选的。
可以在 requires 语句中使用 static 关键字来声明可选依赖:
requires static <optional-module>;
以下模块声明包含对 jdojo.annotation 模块的可选依赖:
module jdojo.claim {
requires static jdojo.anotation;
}
在 requires 语句中允许同时使用 transitive 和 static 修饰符:
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



