通過Thread的getStackTrace()我們可以獲取當前線程的運行信息 ,通過此方法可以獲取我們想要的調用者信息:
例子:被調用者T2.java
public class T2 {

public void t2Method(){
getCaller();
}
public void getCaller(){
StackTraceElement stack[] = Thread.currentThread().getStackTrace();
for (StackTraceElement ste:stack){
if((ste.getClassName().indexOf("T1"))!=-1){
System.out.println("called by "+ste.getClassName()+"."+ste.getMethodName()+"/"+ste.getFileName());
}
}
}

}
調用者:
T1.java
public class T1 {

public static void main(String[] args) {
new T2().t2Method();

}

}
運行顯示:
called by com.test.T1.main/T1.java
例子:被調用者T2.java
















T1.java









called by com.test.T1.main/T1.java