Подтвердить что ты не робот

Почему функция nullPrintStream() в java/lang/System сравнивает currentTimeMillis() с нолем?

При загрузке класса System метод <clinit> создает переменные in, out и err PrintStream в null с помощью метода nullPrintStream():

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

Я понимаю, почему это так, и почему переменные не могут быть созданы во время загрузки, но я смущен, это содержимое этого метода.

Почему он сравнивает currentTimeMillis() с 0? В каком случае это сравнение когда-либо вернет false?

4b9b3361

Ответ 1

Javadoc для метода nullPrintStream() дает ключ:

Компилятор, однако, не может быть разрешен      встроенный доступ к ним, поскольку впоследствии они становятся более разумными      by initializeSystemClass().

Это, по-моему, кодирование, чтобы предотвратить компилятор от простой реализации "возврата null".

currentTimeMillis() никогда не будет меньше 0. Но компилятор недостаточно умен, чтобы знать это, и поэтому оставляет условный оператор неповрежденным.