System.out
se declara como public static final PrintStream out
.
Pero puedes llamar System.setOut()
para reasignarlo.
¿Eh? ¿Cómo es esto posible si lo es final
?
(el mismo punto se aplica a System.in
y System.err
)
Y lo que es más importante, si puede mutar los campos finales estáticos públicos, ¿qué significa esto en cuanto a las garantías (si las hay) que final
le brinda? (Nunca me di cuenta ni esperaba que System.in/out/err se comportara como final
variables)