System.out
объявлен как public static final PrintStream out
.
Но вы можете вызвать System. setOut ()
, чтобы переназначить его.
А? Как это возможно, если оно final
?
(то же самое относится к System.in
и ] System.err
)
И что еще более важно, если вы можете изменить общедоступные статические поля final, что это означает в отношении гарантий (если таковые имеются), которые дает вам final
? (Я никогда не понимал и не ожидал, что System.in/out/err ведет себя как final
переменные)