3

我目前正在修改 javac 编译器,以某种方式生成我们自己的编程语言。

我们希望摆脱 Java 的默认访问修饰符,将没有访问修饰符的所有内容都设为公开。

但是到目前为止,我还没有成功地找到在 Java 编译代码中实现它的位置。我可以轻松地添加到声明阶段之一,但这是我们不希望拥有的糟糕解决方案。

对此有何见解?

4

1 回答 1

4

查看文件格式,尤其是第4.5class节字段和第4.6 节方法,我看到定义了以下常量:

ACC_PUBLIC     0x0001
ACC_PRIVATE    0x0002
ACC_PROTECTED  0x0004

但是,类的特定方法(字段)最多只能设置其 ACC_PRIVATE、ACC_PROTECTED 和 ACC_PUBLIC 标志之一(JLS §8.3.1)。

由于没有ACC_DEFAULT标志并且文档说最多一个(不完全是一个我猜想根本没有标志意味着默认访问。

于 2012-05-28T15:47:36.270 回答