我可以确定谁在Java中调用函数或实例化类吗?
可能重复:我可以确定谁在Java中调用函数或实例化类吗?,java,language-features,Java,Language Features,可能重复: 我只是好奇。我有时会请求这个特性,但后来我用更多的代码解决了它。(调用类在调用该方法时说出了它的名称)您可以使用“假异常”来完成,尽管这个技巧感觉有点脏 try { throw new RuntimeException(); } catch (RuntimeException e) { System.out.println(e.getStackTrace()[1]); } getStackTrace返回一个StackTrac
我只是好奇。我有时会请求这个特性,但后来我用更多的代码解决了它。(调用类在调用该方法时说出了它的名称)您可以使用“假异常”来完成,尽管这个技巧感觉有点脏
try {
throw new RuntimeException();
} catch (RuntimeException e) {
System.out.println(e.getStackTrace()[1]);
}
getStackTrace
返回一个StackTraceElement
对象数组,您可以查看如何处理它们
private Class getCallingClass() {
return new SecurityManager() {
protected Class[] getClassContext(){return super.getClassContext();}
}.getClassContext()[2];
}
或
你不需要扔它,检查我的answer@org.life.java谢谢,很高兴知道我认为你甚至不需要调用
fillInStackTrace
:根据,构造函数为你调用它。Thx为答案。我也可以关闭线程,因为重复。
public class Foo {
public static final void main(final String[] args) {
test();
}
private static void test() {
Throwable e = new Throwable();
StackTraceElement[] elements = e.getStackTrace();
System.out.println(elements.length > 1 ? elements[1].toString() : "(no caller)");
}
}