Question on Implied readability
ali.ebrahimi1781 at gmail.com
Tue Nov 3 08:14:49 UTC 2015
*I think Alex's interpretation of *implied readability is consistent with
current definition of concept and expected behavior.
Based on your intention public modifier should mean:
com.baz embeds com.bar in itself and exports com.bar packages for com.baz's
readers and com.foo does not reads module com.bar.
If this is expected behavior (that I don't think so) why we use:
'require public com.bar' instead of 'includes com.bar'?
On Tue, Nov 3, 2015 at 7:37 AM, Frank Yuan <frank.yuan at oracle.com> wrote:
> Hi Alex
> I don't think so. com.baz declares "requires public com.bar", so com.baz
> decide which com.bar is readable, in this case, decide which com.bar is
> used by com.foo
> Consider the following scenario, which is the common usage of implied
> com.baz provides the following service:
> public Object1 getObject();
> Object1 is a class defined in com.bar, please not com.bar at 2 is not
> visible to com.baz(indeed to avoid conflict, only one com.bar can be
> visible/readable to com.baz), so com.baz construct an Object1 of com.bar at 1
> during getObject() is invoked, and then com.foo get this Object1 instance,
> now com.foo can only use type Object1 of com.bar at 1 to interpret it, who
> guarantee what Object1 of com.bar at 2 is?! So here the type must be
> definite, M2 requires public M1, M3 requires M2, then which M1 is read by
> M2, which M1 must be readable to M3. It's not related to Layer actually.
This would arise error as of pre-jigsaw with multiple classloaders and
I think completed related to layer. Intention of Layers is to handle such
More information about the jigsaw-dev