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