Apuesto a que está expuesto principalmente por brevedad. Compare:
System.out.prinln("blah");
con
System.getOut().println("blah");
El primero es que no muchos caracteres más corto, pero aún así es más corto y más simple conceptualmente. También es muy probable que sea más rápido, quizás especialmente en los días en que el JIT no era muy común en las máquinas virtuales Java; Apuesto a que el acceso directo es más rápido que una llamada a método en esos casos. Entonces, todo se reduce a ser una compensación.
ACTUALIZACIÓN:
En cuanto a final
y setOut()
, la documentation for the latter dice que si hay un controlador de seguridad, que se puede consultar para ver si se permite que la persona que llama para re-establecer el flujo de salida. Esta podría ser la respuesta; si el miembro out
hubiera sido asignable directamente, no habría habido una forma de protegerlo.
Esto es solo mi interpretación de la API y los pensamientos que pueden estar detrás de su diseño, podría estar apagado.
La encapsulación no significa "hacer todas sus variables privadas o protegidas". –
Acepto, aunque me gusta que mis miembros sean privados (excepto los estáticos finales). –
:) Hay una broma allí ... – Varkhan