15

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

module core {
    exports cc.blynk.server.core;
    exports cc.blynk.server.core.protocol.handlers.decoders;
    exports cc.blynk.server.core.protocol.handlers.encoders;
}

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

module core {
    exports cc.blynk.server.core.*;
}

有没有办法做到这一点?这个限制从何而来?

4

1 回答 1

17

不,您不能使用通配符来导出模块中的所有包。您必须明确导出每个包。

这是不允许的,因为这可能主要导致从不同模块导出的不同包中的冲突,这违背了模块化代码的目的。


另外引用其中一个线程:

模块导出的包是一个稳定的 API,消费者可以依赖。出于这个原因,我们让模块作者明确地拼出导出的包。这也降低了多个模块不必要地导出同一个包的可能性。com.abs.* 此外,它避免了如果没有资格导出而有资格导出会发生的混淆com.abs.foo

于 2017-09-30T12:25:11.933 回答