package lecture.etc;
import jp.avaj.lib.debug.L;
/**
* 実行中のメソッド名やクラス名を取得する Java
*
* ・デバッグ用に実行中のメソッド名を表示したいときがあるが、サンプルのようにすればよい。
* ・[1]を[0]にするとgetStackTraceが表示される(笑)
* ・コンストラクタはGetMethodNameではなく<init>と表示されるので、クラス名を表示した方が良い。
*
* ・この機能を共通メソッドにしたい場合は[1]を[2]にする必要がある。
*
* ・他に getFileName()、getLineNumber()も使用できる。
*
*/
public class GetMethodName {
public static void main(String[] args) {
// static メソッド(main)の取得例
L.p(Thread.currentThread().getStackTrace()[1].getMethodName());
GetMethodName obj = new GetMethodName();
obj.method();
}
// コンストラクタでの取得例
private GetMethodName() {
L.p(Thread.currentThread().getStackTrace()[1].getMethodName());
// 上記は<init>と表示される→クラス名を表示する
L.p(Thread.currentThread().getStackTrace()[1].getClassName());
}
// インスタンスメソッドでの取得例
private void method() {
L.p(Thread.currentThread().getStackTrace()[1].getMethodName());
//
// 共通メソッドを使用した場合
L.p(getMethodName());
}
/** 共通メソッド */
public String getMethodName() {
return Thread.currentThread().getStackTrace()[2].getMethodName();
}
}
//---------------------------------------------------
//・目次 Javaエトセトラ
//・目次 - Java入門
//・目次 - ビジネスパーソンの常識と非常識
//・目次 - 論理・発想・思考についての考察と鍛え方
//---------------------------------------------------