1、通过使用Reflection的getCallerClass:可以得到调用者的类.
import sun.reflect.Reflection;
public class T
{
public static void main(String[] args)
{
T2 t=new T2();
t.g();
}
}
class T2
{
public void Ct(){
test();
}
public void test(){
System.out.println(Reflection.getCallerClass(-1));
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));
}
}
输出:
class sun.reflect.Reflection //-1
class sun.reflect.Reflection //0
class com.Chloe.T2 //1
class com.Chloe.T2 //2
class com.Chloe.T //3
class com.intellij.rt.execution.application.AppMain //4
null //5
由此可见:
调用getCallerClass(x) 传参x的值当
- 等于0 和小于0 - 返回 Reflection类
- 等于1 - 返回自己的类
- 等于2 - 返回调用者的类
- 等于3. 4. …n…层层上传。