Java

Javaで実行中のクラス名・メソッド名を取得する方法

More than 1 year has passed since last update.

Javaにおいて、実行中のクラス名やメソッド名を取得する方法です。
標準ライブラリのみを使用しているため、コピペしてすぐに使えます。

クラス名を取得

実行時クラスから取得

Hoge.java
public class Hoge {
    public static void main(String[] args) {
        String className = new Object(){}.getClass().getEnclosingClass().getName();
        System.out.println(className);
    }
}
出力
Hoge

スタックトレースから取得

Hoge.java
public class Hoge {
    public static void main(String[] args) {
        String className = Thread.currentThread().getStackTrace()[1].getClassName();
        System.out.println(className);
    }
}
出力
Hoge

メソッド化

Util.java
public class Util {
    /**
     * 実行中のクラス名を取得します。
     * @return クラス名
     */
    public static String getClassName() {
        return Thread.currentThread().getStackTrace()[2].getClassName();
    }
}
UtilTest.java
public class UtilTest {
    public static void main(String[] args) {
        String className = Util.getClassName();
        System.out.println(className);
    }
}
出力
UtilTest

メソッド名を取得

実行時クラスから取得

Hoge.java
public class Hoge {
    public static void main(String[] args) {
        String methodName = new Object(){}.getClass().getEnclosingMethod().getName();
        System.out.println(methodName);
    }
}
出力
main

スタックトレースから取得

Hoge.java
public class Hoge {
    public static void main(String[] args) {
        String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
        System.out.println(methodName);
    }
}
出力
main

メソッド化

Util.java
public class Util {
    /**
     * 実行中のメソッド名を取得します。
     * @return メソッド名
     */
    public static String getMethodName() {
        return Thread.currentThread().getStackTrace()[2].getMethodName();
    }
}
UtilTest.java
public class UtilTest {
    public static void main(String[] args) {
        String methodName = Util.getMethodName();
        System.out.println(methodName);
    }
}
出力
main