Exporting - the wrong default?
Stephane Epardaud
stef at epardaud.fr
Mon Aug 1 15:58:48 UTC 2016
I don't think public ever meant "public to the world". In Java 1->8 it
means "visible to those who can see the containing scope". If you
declare a public inner class in a private (or package-private) class,
then those who cannot access the outer type also cannot access the
public inner class.
So no, "public" never meant "visible to everyone", it was always about
scope.
On the other hand, for toplevel types, the scope had always been the
package, and packages were public by default. Now that default changes
to private, but notice that even here, a package is only private outside
its scope (the module). Other packages in the same scope (module) will
be able to access it.
So for me it's always been about exporting from the current scope.
On 01/08/16 17:38, Paul Benedict wrote:
> To echo David, there is a complaint by me in these archives how I still
> find it difficult to remember that "public" is no longer being public. I
> feel the same way today still. The word "public" means "for everyone" so
> it's always jarring to have it no longer mean what it should mean in normal
> English. Also, I find it less than appealing to do double-duty to make my
> classes public. I now have to remind myself to export my package but it's
> still something I forget. I find this step to be a nuisance. That's my real
> world feedback.
>
More information about the jigsaw-dev
mailing list