Почему System.out не возвращает нулевой объект?

В System.java экземпляр out создается:

public final static PrintStream out = nullPrintStream();

Вы ожидаете, что это вернет допустимый объект PrintStream, за исключением того, как выглядит метод:

private static PrintStream nullPrintStream() throws NullPointerException {
    if (currentTimeMillis() > 0) {
        return null;
    }
    throw new NullPointerException();
}

Это всегда будет возвращать ноль. Однако вызов чего-то вроде System.out.println() вызывает метод println() для действительного объекта PrintStream вместо создания исключения нулевого указателя. Может ли кто-нибудь объяснить, почему это работает и как/где фактически создается экземпляр объекта PrintStream?


person Dan    schedule 27.08.2017    source источник
comment
О какой версии Java вы говорите? Будьте точны.   -  person Stephen C    schedule 27.08.2017
comment
Код, на который я ссылался, был jdk 6-b14.   -  person Dan    schedule 27.08.2017
comment
Да, этот пост отвечает на мой вопрос. Плохо, это дубликат.   -  person Dan    schedule 27.08.2017
comment
почему nullPrintStream? чтобы обойти проблему встраивания. см. stackoverflow.com/a/15566079   -  person    schedule 27.08.2017