我目前正在修改javac編譯器,以某種方式生成我們自己的編程語言。編譯中的Java默認修飾符
我們想擺脫Java的默認訪問修飾符,使沒有訪問修飾符的所有東西都公開。
但是到目前爲止,我還沒有成功找到Java編譯代碼在哪裏實現。我可以輕鬆添加到其中一個聲明階段,但這是一個我們不希望遇到的糟糕解決方案。
對此有何見解?
我目前正在修改javac編譯器,以某種方式生成我們自己的編程語言。編譯中的Java默認修飾符
我們想擺脫Java的默認訪問修飾符,使沒有訪問修飾符的所有東西都公開。
但是到目前爲止,我還沒有成功找到Java編譯代碼在哪裏實現。我可以輕鬆添加到其中一個聲明階段,但這是一個我們不希望遇到的糟糕解決方案。
對此有何見解?
綜觀The class
File Format,特別是部分4.5字段和4.6方法我看到正在定義的以下常量:
ACC_PUBLIC 0x0001
ACC_PRIVATE 0x0002
ACC_PROTECTED 0x0004
然而,一個特定的方法(字段)一類的可最多隻有一個ACC_PRIVATE,ACC_PROTECTED和ACC_PUBLIC標誌被設置(JLS §8.3.1)。
由於沒有ACC_DEFAULT
標誌和文檔在最一個說:(不只有一個)我猜想,都沒有標誌意味着默認訪問。
那麼,我們可以假設沒有真正的歸因,這隻能由jvm處理? – Adriano
@Adriano:修飾符*存儲在'.class'文件中,JVM讀取它們。我只是猜測沒有'ACC_'修飾符表示默認修飾符。 –
對於接口,默認的修改器是公共的。我喜歡做的是將所有東西都設置爲私有的,或者將其封裝在本地,當我嘗試使用需要公開的東西時,讓IDE將該字段或方法作爲自動修復(我必須有權訪問源代碼才能執行此操作) –
(我必須問:你爲什麼要改變這樣的語言?!) –
我的大學的研究 – Adriano