簡體   English   中英

Java:如何排除java.lang類的隱式導入

[英]Java: How to Exclude Implicit Import of java.lang classes

例如,如果我想排除加載java.lang.String,我將如何去做?

編寫自己的編譯器,可以編譯這種幾乎是Java的新語言。

Java中,

編譯單元中的代碼自動訪問其程序包中聲明的所有類型,並且還自動導入預定義程序包java.lang聲明的所有公共類型。

沒有辦法禁用該行為。 而且您不需要; 導入只會影響編譯,即使類型(不明智地)與java.lang類型具有相同的名稱(如Object ,也可以在源代碼中使用其完全限定名稱來引用它。

您正在混淆兩個主題。

該標題為“如何排除java.lang類的隱式導入”,在正文中您詢問“排除加載java.lang.String”。

java.lang.*的自動導入對運行時沒有任何影響 它僅允許您在編譯時使用簡單單詞String而不是點構造java.lang.String來引用字符串。

僅當您的代碼需要它時 ,才會加載 java.lang.String類,無論您在源代碼中將其引用為String還是java.lang.String

而且我非常確定每個Java程序都需要String類,例如,在其public static void main(String[] args)加上許多庫類中。

因此,如果您擔心內存占用過多,以至於無法加載String類,請切換到其他語言,例如1970年代的K&RC。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM