Java 学习笔记

所有文章
📖 最新文章 transmittable-thread-local 库 JOOR 反射库 Lombok 库:为你减少样板代码 Slf4j 日志组件的使用 加速maven、gradle依赖下载
📖 Java 基础 安装 第一个程序 使用 UTF-8 编写代码 空值 null 正则表达式 线程 日期/时间 匿名类 枚举 ThreadLocal 线程本地变量 动态代理 jar 命令

Java : 获取当前函数所属类的类名


方式1: 非静态方法中使用 this.getClass().getName()

public class ClassNameTest {

    public void testMethod() {
        System.out.println(this.getClass().getName());
    }

    public static void main(String[] args) {
        ClassNameTest classNameTest = new ClassNameTest();
        classNameTest.testMethod();
    }
}

方式2: 使用函数内部类/匿名类对象的 getEnclosingClass 方法

public class ClassNameTest {

    public static void testMethod() {
        String className = new Object() {}
                .getClass()
                .getEnclosingClass()
                .getName();
        System.out.println(className);
    }

    public static void main(String[] args) {
        testMethod();
    }

}

运行结果:

ClassNameTest

方式3: 从异常堆栈跟踪中获取方法名

public class ClassNameTest {

    public static void testMethod() {
        StackTraceElement[] stackTrace = new Throwable().getStackTrace();
        String className = stackTrace[0].getClassName();
        System.out.println(className);
    }

    public static void main(String[] args) {
        testMethod();
    }

}

运行结果:

ClassNameTest

方式4: 从线程堆栈跟踪中获取方法名

public class ClassNameTest {

    public static void testMethod() {
        StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
        String className = stackTrace[1].getClassName();
        System.out.println(className);
    }

    public static void main(String[] args) {
        testMethod();
    }
}

运行结果:

ClassNameTest

( 本文完 )

文章目录