我目前正在修改javac编译器,以某种方式产生我们自己的编程语言.
我们要摆脱Java的默认访问修饰符,将所有没有访问修饰符的内容公开.
但是到目前为止,我还没有成功找到在Java编译代码中实现的位置.我可以轻松地添加到声明阶段之一,但这是一个我们不希望拥有的糟糕解决方案.
有什么见解吗?
解决方法:
查看The class
File Format,尤其是4.5字段和4.6方法,我看到定义了以下常量:
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 07001).
由于没有ACC_DEFAULT标志,并且文档最多说一个(不完全是一个),所以我想根本没有标志就意味着默认访问.