class A{
public void methodA(){
//当该方法被调用时,如何动态的获取,该方法是从哪被调用的呢?
}
}class B{
public void test1(){
A a = new A();
a.methodA();
} public void test2(){
A a = new A();
a.methodA();
}
}
class C{
public void test3(){
A a = new A();
a.methodA();
}
}
如上代码,当外界调用 A.methodA 时,能否动态的知道,该方法是从哪个方法中(test1,test2,test3),调用的呢?
在 class B 中的 test1() 和 test2() 方法,以及 class C 中的 test3() 方法中都有可能调用 class A 的 methodA() 方法。那么当 methodA() 被调用时,如何才能在 methodA() 方法内部,知道它是在 test1() 方法中被调用的,还是在 test2() 方法中被调用的,还是在 test3() 方法中被调用的呢。
public void methodA(Class c,Method m){
//当该方法被调用时,如何动态的获取,该方法是从哪被调用的呢?
c类的m方法调用的。
}//不过不知道你的需求是什么?
class A{
public void methodA(){
System.out.println(Thread.currentThread().getStackTrace().length);
StackTraceElement[] ss=Thread.currentThread().getStackTrace();
for (StackTraceElement stackTraceElement : ss) {
System.out.println(stackTraceElement.getClassName());
}
}
}class B{
public void test1(){
A a = new A();
a.methodA();
} public void test2(){
A a = new A();
a.methodA();
}
}
class C{
public void test3(){
A a = new A();
a.methodA();
}
}
public class Test {
public static void main(String[] args) {
C c=new C();
c.test3();
}
}