测试环境:
IDEA 2017、JDK1.8
测试代码:
public class Log4jTest {
class Innr{
public void gg(){
System.out.println(Reflection.getCallerClass(0));
System.out.println(Reflection.getCallerClass(1));
System.out.println(Reflection.getCallerClass(2));
System.out.println(Reflection.getCallerClass(3));
System.out.println(Reflection.getCallerClass(4));
System.out.println(Reflection.getCallerClass(5));
}
public void g(){
gg();
}
public void t(){
g();
}
}
@Test
public void log4jTest(){
Innr test=new Innr();
test.t();
}
}
测试结果:
class sun.reflect.Reflection
class zengqiang.Log4jTest$Innr
class zengqiang.Log4jTest$Innr
class zengqiang.Log4jTest$Innr
class zengqiang.Log4jTest
class org.junit.runners.model.FrameworkMethod$1
结论:
getCallerClass方法里面参数除了0是表示返回Reflection本生,其它的都是表示上一级i-1的调用者
申明:
借鉴了黄运彬的博客,结论跟举例不全,自己尝试补全。
本文原创,转载请注明出处,谢谢。