今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

標準出力に出るメッセージ

かなり昔に作った Java のライブラリを久しぶりに使った。まさか他の用途で使うなんて思ってなかった。そのライブラリは、標準出力にメッセージを出していた。
このメッセージを標準出力に出したくないんだけど、もとのコードは変更したくない。どうしようかと10秒くらい考えたら、簡単な解決策を思いついた。(^^)

    PrintStream stdout = System.out;
    String name = getNullDeviceName();
    PrintStream ps = new PrintStream(new FileOutputStream(name));
    System.out = ps;

もとのコードでは System.out に出力しているので、その System.out を別のものに置き換えてしまえば、もとのライブラリが出力していたメッセージは出なくなる。
気になるのは、こうやってしまうと、後でデバッグしたくなったときに System.out にメッセージを出して確認しようとしても、まったく出なくなってしまう点。「なんで System.out にメッセージがでないんだよう」と未来の誰かがおろおろしそうな気がする。