问题
Given:
- Modules
A
andB
, whereB
importsA
. - Module
A
exportsexternal.class1
. It defines but does not exportexternal.class1.secretProvider
,internal.SharedSecrets
andinternal.class2
(more on these below). - Module
A
uses the SharedSecrets mechanism to grantexternal.class1
access to private methods ininternal.class2
usingexternal.class1.secretProvider
.
I wish to grant external.class3
(defined in Module B
) access to private methods in internal.class2
but seeing as internal.SharedSecrets
and external.class1.secretProvider
are not exported by A
I have no way of doing so.
Is there a way for B
to access to A
's secrets without exporting them for the whole world to see?
回答1:
Is there a way for B to access to A's secrets without exporting them for the whole world to see?
If I am not getting the question wrong, you can use qualified exports to make sure you export those packages just to a specific (list of) module. You can do so as :
module A {
exports external.class1.secretProvider to B;
exports internal.SharedSecrets to B;
// ... rest of your declarations
}
来源:https://stackoverflow.com/questions/53653132/is-it-possible-to-use-sharedsecrets-across-java-modules