StoryEdit 開発日誌

ウェブアプリ StoryEditを作ってましたが延期。普通のブログ。

JavaでPrintfデバッグ __LINE__や__FILE__をJavaで使う

まるで旧世代プログラマーみたいな発想なのかもしれないが,Eclipseになれないうちは,printfデバッグをつかいたい.

伝統的なD関数(自分の中での,デバッグ出力用の関数)をJavaでも定義したいわけだが、、、現在の知識では,どっかのクラスに属させないと行けない為,結局以下のようになった。

public class D {
  public static void d(String msg) {
    System.out.println(
      "[" + new Throwable().getStackTrace()[1].getFileName() + ":"
      + new Throwable().getStackTrace()[1].getLineNumber() + "] "
      + msg);
  }
}

Cでいうところの__LINE__や__FILE__はないため,上のような方法になった。他にも,CallerのMethodやClass名はとれるらしい。Javascriptではスタックトレースうまくいかなかったんだけど,Javaはすんなりいった。にしても、、、Throwableを毎回生成してていいものか。。。とりあえず動いているので、これでよしとする。

しかし,D()とかけずに,D.d()とかかなきゃいけないのが苦痛だ。。。いい方法はないものか。