3

私は現在、javacコンパイラを変更して、特定の方法で独自のプログラミング言語を生成するように取り組んでいます。

Javaのデフォルトのアクセス修飾子を取り除き、アクセス修飾子を持たないものはすべてパブリックにします。

しかし、これまでのところ、Javaコンパイルコードのどこにこれが実装されているかを見つけることに成功していません。宣言フェーズの1つに簡単に追加できますが、これは私たちが望んでいない不十分なソリューションです。

これについて何か洞察はありますか?

4

1 に答える 1

4

ファイル形式、特にセクション4.5フィールド4.6メソッドを見ると、次の定数が定義されていることがわかりますclass

ACC_PUBLIC     0x0001
ACC_PRIVATE    0x0002
ACC_PROTECTED  0x0004

ただし、クラスの特定のメソッド(フィールド)には、最大でACC_PRIVATE、ACC_PROTECTED、およびACC_PUBLICフラグのいずれかが設定されている場合があります(JLS§8.3.1)。

フラグはなくACC_DEFAULT、ドキュメントには多くて1つ正確には1つではない)と記載されているため、フラグがまったくないということはデフォルトのアクセスを意味すると思います。

于 2012-05-28T15:47:36.270 に答える