[英]Why can't I use the print() or println() method in java.io.PrintStream as it is after importing the class?
[英]why java.io.PrintStream is not needed in System.out.println()?
所以我问自己为什么我不必导入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
(文字文本)在代码中的含义。 它不是告诉编译器你将使用从其他地方获得的PrintStream
对象(在本例中为System
)。
换句话说: import
就是知道如何编译源文本; 它不是关于运行时使用的内容。 例如,导入不会写入类文件; 在运行时不需要信息。 字段和变量定义与它们的完全限定类名一起存储,而不是import
-relative类。 由于在System
out
的类型信息是java.io.PrintStream
,编译器(以及后来的JVM)知道它是java.io.PrintStream
,无论你是否在代码中导入PrintStream
。
X.java
package p;
import q.Y;
public class X { Y y; }
Z.java
import p.X;
... X x = ...;
... x.y ...;
对于X
的出现,编译器需要导入X.
对于xy
,编译器可以在X的类数据中找到具有Y等方法的类Y.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.