1

例如,如果我想排除加载 java.lang.String,我该怎么做呢?

4

2 回答 2

5

编写您自己的编译器,它可以编译这种新的、几乎是 Java 的语言。

Java 中,

编译单元中的代码自动可以访问其包中声明的所有类型,并自动导入预定义包中声明的所有公共类型java.lang

没有办法禁用该行为。你不需要;导入只会影响编译,即使一个类型(不明智地)被命名为与一个java.lang类型相同的名称,例如Object,您也可以在源代码中使用其完全限定名称来引用它。

于 2018-01-26T16:44:46.177 回答
0

你混淆了两个主题。

标题为“如何排除 java.lang 类的隐式导入”,在正文中您询问“排除加载 java.lang.String”。

的自动导入对运行时java.lang.*没有任何影响。它只允许您在编译时使用简单的单词String而不是 dot-construct来引用字符串java.lang.String

当且仅当您的代码需要它时java.lang.String,才会加载该类,无论您是在源代码中引用它还是在源代码中引用它。Stringjava.lang.String

而且我非常确定每个 Java 程序都需要 String 类,例如在它public static void main(String[] args)的许多库类中。

因此,如果您非常担心内存占用以至于加载 String 类可能会成为问题,请切换到其他语言,例如 1970 年代的 K&R C。

于 2018-01-26T17:38:04.847 回答