所以我问自己为什么我不必导入 java.io.PrintStream
来使用 System.out
。我知道 java.lang
是编译器默认导入的。好的。
因为 System
是 java.lang
的一个类,我可以使用字段 System.out
。但是这个字段的类型是 java.io.PrintStream
并且默认情况下不导入这个类(它在 java.io 包中),那么为什么我可以访问 System.out.print( )
例如不单独导入 java.io.PrintStream
吗?
如果我创建自己的类 MyClass
那么我不能做这样的事情 MyClass anInstance = new MyClass();
MyClass 需要首先导入。为什么这对于 PrintStream
不是强制性的?
提前致谢。
最佳答案
如果您需要在您的 代码中使用PrintStream
(类名),您只需要导入PrintStream
。在类型为 PrintStream
的另一个对象上使用字段不需要它。
即import
就是告诉编译器PrintStream
(字面意思)在你的代码中是什么意思。这并不是告诉编译器您将使用从其他地方(在本例中为 System
)获得的 PrintStream
对象。
换句话说:import
就是知道如何编译源文本;这与运行时使用什么无关。例如,导入不会写入类文件;只是在运行时不需要这些信息。字段和变量定义与它们的完全限定类名一起存储,而不是相对于 import
的类名。因为 out
在 System
中的类型信息表明它是 java.io.PrintStream
,所以编译器(以及后来的 JVM)知道它是一个 java.io.PrintStream
,无论您是否在代码中导入 PrintStream
。
关于java - 为什么 System.out.println() 中不需要 java.io.PrintStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50488015/