Java 获取调用方法的调用类及调用类的上级调用方法或类

StackTraceElement stack[] = Thread.currentThread().getStackTrace();
					String callName=stack[2].getClassName();
					if (!callName.endsWith(
							"SelectDefBindingContainer")){
						
					}
                System.out.println("called by "+ste.getClassName()+"."+ste.getMethodName()+"/"+ste.getFileName());
            }
           }   

import java.sql.SQLException; 


  class Test01{
<span style="white-space:pre">	</span>static  void fun(){
<span style="white-space:pre">		</span>StackTraceElement stack[] = Thread.currentThread().getStackTrace();  
        for (StackTraceElement ste:stack){  
        <span style="white-space:pre">	</span>System.out.println(ste.getClassName());
        } 
<span style="white-space:pre">	</span>  }
  }
public class Test { 
    public static void main(String[] args) throws SQLException { 
    <span style="white-space:pre">	</span> Test01.fun();
    } 
}

java.lang.Thread  最下层
Test01  上一层
Test  上一层的上一层
......


你可能感兴趣的:(Java 获取调用方法的调用类及调用类的上级调用方法或类)