是否有可能获得有关调用另一个类的类的信息?
class Bar{
public Bar{}
public String getInvokingClassInfo(){
return "...";
}
}
class Foo{
public Foo(){
Bar bar = new Bar();
System.out.println("Invoking class is: "+bar.getInvokingClassInfo());
}
}
Run Code Online (Sandbox Code Playgroud)
如何到达这个地方:
System.out.println(bar.getInvokingClassInfo());
Run Code Online (Sandbox Code Playgroud)
关于调用(Foo)这个(Bar)的类的信息:
Invoking class: FooRun Code Online (Sandbox Code Playgroud)
StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
String callerClassName = stackTrace[index].getClassName();
Run Code Online (Sandbox Code Playgroud)
这是获取当前线程的堆栈跟踪.如评论中所述,存在实现差异,因此如果您担心这样,您可以实现以下内容:
StackTraceElement数组(使用在循环外声明的计数器变量)breakindex上面代码中的含义)new Exception().getStackTrace()