小棚木です。 宿題について調べました。 調査したソースはJ2SDK 1.4.2です。 結論は"nativeメソッドを使ってfinal値を書き換えている。"です。 setOut,setErrも同様です。 > ■ 17.5 final フィールドのセマンティックス > 17.5.4 実行 > - System.setIn、System.setOut、System.setErr 実装の秘密を探る。-> 宿題 public static void setIn(InputStream in) { checkIO(); <== Permissionのチェック setIn0(in); <== nativeメソッド呼び出し } private static native void setIn0(InputStream in); 以上