public final static InputStream in = null;
public final static PrintStream out = null;
public final static PrintStream err = null;
但众所周知,这些流默认连接到控制台并且已经打开。System 类中还有一些方法 setIn()、setOut 和 setErr() 来重定向流。当它们被声明为 final 并设置为初始化值 null 时,这怎么可能呢?
我编译了以下代码,在调用 println() 时设置了一个断点,并使用 netbeans 进行了调试。我的目标是通过进入源代码来准确确定变量 System.in 何时初始化为标准输出。但似乎在调用 main 方法时,输出流 out 已经初始化。
public static void main(String[] args) {
System.out.println("foo");
}