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());
}
}
}
}
public class T1 {
public static void main(String[] args) {
new T2().t2Method();
}
}
public static void getCaller() {
StackTraceElement[] stack = (new Throwable()).getStackTrace();
for (int i = 0; i < stack.length; i++) {
StackTraceElement ste = stack[i];
System.out.println(ste.getClassName() + "." + ste.getMethodName() + "(...);");
System.out.println(i + "--" + ste.getMethodName());
System.out.println(i + "--" + ste.getFileName());
System.out.println(i + "--" + ste.getLineNumber());
}
}
运行显示:
called by com.test.T1.main/T1.java
转自[url]http://www.blogjava.net/freeman1984/archive/2010/01/14/309413.html[/url]
[url]http://www.iteye.com/topic/13179[/url]
本文提供了一个Java示例程序,演示了如何通过调用堆栈获取当前线程的堆栈跟踪信息,并展示了如何使用StackTraceElement类来访问类名、方法名、文件名和行号等信息。
340

被折叠的 条评论
为什么被折叠?



