为什么System.out.println()中不需要java.io.PrintStream?

Tri*_* So 3 java java-io

所以我问自己为什么我不需要导入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

提前致谢.

T.J*_*der 5

你只需要进口PrintStream,如果你需要使用PrintStream(类名)在你的代码.在另一个类型的对象上使用字段PrintStream不需要它.

也就是说,import是告诉编译器PrintStream代码中的(文字文本)含义.它不是告诉编译器你将使用PrintStream从其他地方获得的对象(在这种情况下System).

换句话说:import就是知道如何编译源文本; 它不是关于运行时使用的内容.例如,导入不会写入类文件; 在运行时不需要信息.字段和变量定义以其完全限定的类名存储,而不是import相对的类名.由于它的out类型信息System说明了java.io.PrintStream,编译器(以及后来的JVM)知道它是a java.io.PrintStream,无论你是否导入PrintStream代码.