提醒我们用Class sun.reflect.Reflection.getCallerClass(int i),
参数随便,0,1,2,3都可以。
0是getCallerClass自身,即Reflection类
1是bean自身,即调用Reflect的Bean自身类
2就应该是bean的调用方,
3。。。
public class Test {
public static void main(String[] args){
A.print();
}
}
public class A {
public static void print() {
B.print();
}
}
public class B {
public static void print() {
C.print();
}
}
public class C {
public static void print() {
D.print();
}
}
public class D {
public static void print() {
System.out.println(sun.reflect.Reflection.getCallerClass(0);
//class sun.reflect.Reflection
System.out.println(sun.reflect.Reflection.getCallerClass(1);
//class D
System.out.println(sun.reflect.Reflection.getCallerClass(2);
//class C
System.out.println(sun.reflect.Reflection.getCallerClass(3);
//class B
System.out.println(sun.reflect.Reflection.getCallerClass(4);
//class A
System.out.println(sun.reflect.Reflection.getCallerClass(5);
//class Test
}
}
参数随便,0,1,2,3都可以。
0是getCallerClass自身,即Reflection类
1是bean自身,即调用Reflect的Bean自身类
2就应该是bean的调用方,
3。。。
public class Test {
public static void main(String[] args){
A.print();
}
}
public class A {
public static void print() {
B.print();
}
}
public class B {
public static void print() {
C.print();
}
}
public class C {
public static void print() {
D.print();
}
}
public class D {
public static void print() {
System.out.println(sun.reflect.Reflection.getCallerClass(0);
//class sun.reflect.Reflection
System.out.println(sun.reflect.Reflection.getCallerClass(1);
//class D
System.out.println(sun.reflect.Reflection.getCallerClass(2);
//class C
System.out.println(sun.reflect.Reflection.getCallerClass(3);
//class B
System.out.println(sun.reflect.Reflection.getCallerClass(4);
//class A
System.out.println(sun.reflect.Reflection.getCallerClass(5);
//class Test
}
}
本文通过一个简单的Java程序示例介绍了如何使用Java反射机制中的sun.reflect.Reflection.getCallerClass方法来获取当前方法调用栈中特定层级的调用者类信息。通过递归调用不同类的方法,并设置不同的参数值,可以准确地展示从调用Reflection类方法到main方法的完整调用路径。
3582

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



