Search code examples
javajavac

Java default modifier in compilation


I'm currently working on modifying javac compiler to produce, in a certain way, our own Programming Language.

We want to get rid of Java's default access modifier, making everything that has no access modifier as public.

But so far, I haven't been successfull to find where in Java compilation code this is implemented. I could easily add into one of the declaration phases, but this is a poor solution that we wouldn't like to have.

Any insight on this?


Solution

  • Looking at The class File Format, especially section 4.5 Fields and 4.6 Methods I see the following constants being defined:

    ACC_PUBLIC     0x0001
    ACC_PRIVATE    0x0002
    ACC_PROTECTED  0x0004
    

    However, a specific method (field) of a class may have at most one of its ACC_PRIVATE, ACC_PROTECTED, and ACC_PUBLIC flags set (JLS §8.3.1).

    Since there is no ACC_DEFAULT flag and the documentation says at most one (not exactly one) I would guess that having no flags at all means default access.