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.


Reply via email to