java怎么在一个无参数的静态方法中获取调用它的Class?
写一个静态方法,这个静态方法没有形式任何参数,在方法内,获得调用该静态方法所在类的class。
比如在Test.Class内的方法中调用静态方法,不传入什么参数,直接在静态方法内获取Test.Class。
怎么做?最好能适应jdk17
回复
1个回答

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();
}
}
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容