如何从Java 9模块导出所有包?

Dmi*_*kiy 10 java java-9 java-module

现在,对于我拥有的每个模块,我需要明确指定要导出的包.例如:

module core {
    exports cc.blynk.server.core;
    exports cc.blynk.server.core.protocol.handlers.decoders;
    exports cc.blynk.server.core.protocol.handlers.encoders;
}
Run Code Online (Sandbox Code Playgroud)

但是,它不是很方便.我想做那样的事情:

module core {
    exports cc.blynk.server.core.*;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?这种限制来自哪里?

Nam*_*man 12

用法

module core {
    exports cc.blynk.server.core.*;
}
Run Code Online (Sandbox Code Playgroud)

不鼓励,因为这可能主要导致从不同模块导出的不同包中的冲突,这违反了模块化代码的目的.


另外引用其中一个主题:

模块导出的包旨在成为消费者可以依赖的稳定API.出于这个原因,我们让模块作者明确地拼出导出的包.这也减少了多个模块不必要地导出相同包的可能性.此外,它还避免了com.abs.* 在导出时具有限定条件而未经限定导出时可能出现的混淆com.abs.foo.

  • 这对图书馆开发人员来说是一个大问题。 (3认同)