Implied readability: calling toString()

Sander Mak sander.mak at
Fri May 27 11:39:18 UTC 2016

I'm running into the following compilation error (build

$ javac -modulesourcepath src -d out $(find . -name '*.java')
.src/test/client/ error: toString() in Object is defined in an inaccessible class or interface

Besides the fact that the error message is somewhat confusing (how would toString() in Object ever be inaccessible?), this example raises a question on implied readability for me.

In this case, repository.findText() returns a type Text that normally requires implied readability. I deliberately omitted the 'public' from the corresponding requires clause, since I thought that calling toString() (or equals/hashCode) would be possible without having readability on the actual type. In the end it's just an invokevirtual on j.l.Object, right? Am I missing something here? It works fine when adding back the 'public' to the requires clause, obviously.


More information about the jigsaw-dev mailing list