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