java怎么在一个无参数的静态方法中获取调用它的Class?

作者站长头像
站长
· 阅读数 22

写一个静态方法,这个静态方法没有形式任何参数,在方法内,获得调用该静态方法所在类的class。

比如在Test.Class内的方法中调用静态方法,不传入什么参数,直接在静态方法内获取Test.Class。

怎么做?最好能适应jdk17

回复
1个回答
avatar
test
2024-07-07

获取调用者 class 跟参数没关系,不需要强调这个。

通过获取堆栈信息,找到调用者的 class 是谁。

public static void test() {
    StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
    String className = stackTrace[2].getClassName();
    Class<?> clazz;
    try {
        clazz = Class.forName(className);
        System.out.println(clazz.getName());
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
}
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容