例如,如果我想排除加载 java.lang.String,我该怎么做呢?
2 回答
编写您自己的编译器,它可以编译这种新的、几乎是 Java 的语言。
编译单元中的代码自动可以访问其包中声明的所有类型,并自动导入预定义包中声明的所有公共类型
java.lang
。
没有办法禁用该行为。你不需要;导入只会影响编译,即使一个类型(不明智地)被命名为与一个java.lang
类型相同的名称,例如Object
,您也可以在源代码中使用其完全限定名称来引用它。
你混淆了两个主题。
标题为“如何排除 java.lang 类的隐式导入”,在正文中您询问“排除加载 java.lang.String”。
的自动导入对运行时java.lang.*
没有任何影响。它只允许您在编译时使用简单的单词String
而不是 dot-construct来引用字符串java.lang.String
。
当且仅当您的代码需要它时java.lang.String
,才会加载该类,无论您是在源代码中引用它还是在源代码中引用它。String
java.lang.String
而且我非常确定每个 Java 程序都需要 String 类,例如在它public static void main(String[] args)
的许多库类中。
因此,如果您非常担心内存占用以至于加载 String 类可能会成为问题,请切换到其他语言,例如 1970 年代的 K&R C。