public final static InputStream in = null;
public final static PrintStream out = null;
public final static PrintStream err = null;
Но, как мы очень хорошо знаем, эти потоки подключены к консоли по умолчанию и уже открыты. Существуют также методы в System class setIn(), setOut и setErr() для перенаправления потоков. Как это возможно, когда они были объявлены окончательными и установлены на значение инициализации null?
Я скомпилировал следующий код, установил точку останова при вызове println() и отладил с помощью netbeans. Моя цель состояла в том, чтобы точно определить, когда переменная System.in инициализируется стандартным выходом, вступая в исходный код. Но кажется, что выходной поток уже инициализирован к моменту вызова основного метода.
public static void main(String[] args) {
System.out.println("foo");
}