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

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

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

怎么做?最好能适应jdk17


回答:

获取调用者 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();

}

}


回答:

MethodHandles.lookup().lookupClass();

或者

Thread.currentThread().getStackTrace()[1].getClassName()

第一种更好点,内部是调用

jdk.internal.reflect.Reflection#getCallerClass


回答:

你要这样?

本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。

以上是 java怎么在一个无参数的静态方法中获取调用它的Class? 的全部内容, 来源链接: utcz.com/p/945071.html

回到顶部