System.out
として宣言されpublic static final PrintStream out
ます。
ただし、呼び出しSystem.setOut()
て再割り当てすることはできます。
え?もしそうなら、これはどのように可能final
ですか?
(同じポイントに適用されるSystem.in
とSystem.err
)
さらに重要なことに、パブリック静的最終フィールドを変更できる場合、それfinal
が提供する保証(ある場合)に関して、これはどういう意味ですか?(System.in/out/errがfinal
変数として動作することを認識も期待もしていませんでした)