出力を入力へ

プログラミングに関する自分が考えた事を中心にまとめます

Javaにおけるデバッグプリントの実装

目的:
Javaデバッグ実行時のみメッセージの出力を行いたい。



解決策:
変数modeDebugがtrueの時のみprintを実行すればよい。

実現方式1:
debugPrintメソッドを定義し、debugPrintメソッド内で
modeDebug変数を参照し、printの実行を判断する。
デバッグプリント文には、debugPrintメソッドを利用する。

public class DebugPrint {
    private static boolean modeDebug = true;

    public static void main(String[] args) {
        debugPrint("this is a debug print");
    }

    public static void debugPrint(Object obj) {
        if (modeDebug) System.out.print(obj);
    }
}

実現方式2:
デバッグ用のPrintStreamを定義する。
デバッグ時はPrintStreamはSystem.errなどの出力先を、
デバッグ時は出力先なしのOutputStreamを指定する。
デバッグプリント文には、デバッグ用PrintStreamを利用する。


実現方式ごとのメリット・デメリットについては、
方法1は方法2に比べて実装量が少なくシンプルなので
軽く実装したい場合によい。

これに対して、方法2ではPrintStreamに実装されている
すべてのメソッド(formatなど)が利用可能なので
デバッグ文の内容を工夫することが可能。
方法1ではPrintStreamのメソッドを再実装する必要がある。

こんなとこかな?