在系统.java源中,标准输入、输出和错误流被声明为 final 并初始化为 null?
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 方法时,输出流出似乎已经初始化。
public static void main(String[] args) {
System.out.println("foo");
}