【发布时间】:2012-07-03 15:25:44
【问题描述】:
我想获取方法的调用者类,即
class foo{
bar();
}
在方法栏中,我需要获取类名foo,我找到了这个方法:
Class clazz = sun.reflect.Reflection.getCallerClass(1);
但是,即使 getCallerClass 是 public,当我尝试调用它时,Eclipse 会说:
访问限制:方法 getCallerClass() 来自类型 由于所需库的限制,无法访问反射 C:\Program Files\Java\jre7\lib\rt.jar
还有其他选择吗?
【问题讨论】:
-
这有点令人困惑。你想获取 caller 类还是定义了
bar()的类? -
Reflection.getCallerClass(1);Reflection 类? -
Java 9 及更高版本:
StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE).getCallerClass()
标签: java