我有class X
,在它里面有一个叫做doStuff()
的static
方法,而且我有几个其他的类,其中有些方法因为某些原因调用doStuff()
。有没有办法在doStuff()
中使用打印方法打印从中调用哪些方法和类?如何获取调用静态方法的类和方法?
1
A
回答
4
是:new Throwable().getStackTrace()
返回StackTraceElement
的数组。索引号码1是您的来电者。
+1
+1:或'Thread.currentThread()。getStackTrace()' – 2011-12-27 12:08:02
+0
谢谢,但我使用的索引是3.索引1给我的名字的A类和doStuff()。 – nyxz 2011-12-27 13:16:22
0
您不需要强制和Exception
为了做到这一点。选中此类似的问题:
package test;
class TestCaller {
public static void meth() {
System.out.println("Called by class: " + sun.reflect.Reflection.getCallerClass(2));
}
}
public class Main {
public static void main(String[] args) {
TestCaller.meth();
}
}
输出:
Is there a way to dump a stack trace without throwing an exception in java?
2
/**
* <li> 0 dumpThreads
* <li> 1 getStackTrace
* <li> 2 getCallingMethodName
* <li> 3 [calling method]
*
* @return
*/
private String getCallingMethodName() {
return Thread.currentThread().getStackTrace()[3].getMethodName();
}
1
可以使用获得致电类 “的类调用:类test.Main”
相关问题
- 1. 如何调用类的静态方法?
- 2. 调用静态类方法
- 3. 从静态基类方法调用静态派生类方法
- 4. 如何从静态方法调用非静态方法?
- 5. 如何用静态方法来调用静态类(UnitOfWork case)?
- 6. 使用方法调用静态方法?
- 7. 调用一类的非静态方法
- 8. 调用静态方法的一类
- 9. 调用其他类的静态方法
- 10. 从非静态类动态调用非静态方法的最简单方法?
- 11. 静态类和静态方法
- 12. 使用类型调用静态方法
- 13. 从Python中的静态方法调用非静态方法
- 14. Java - 如何获取类调用方法
- 15. 如何在PHP中使用静态方法获取类名?
- 16. 如何使用静态方法调用非静态方法(使用WebControl)?
- 17. 如何获取类在.NET中输入基类静态方法?
- 18. 在类内调用静态方法?
- 19. moqing静态方法调用c#库类
- 20. 如何从静态方法调用startActivityForResult?
- 21. 如何从静态方法调用getSupportFragmentManager?
- 22. 静态方法调用
- 23. 静态方法调用单
- 24. 调用静态方法
- 25. 以静态方法调用?
- 26. 调用静态java.text.DateFormat方法不可取?
- 27. 如何调用主要方法中的非静态方法
- 28. 从另一个静态方法中调用静态方法
- 29. 如何从另一个类的静态类中调用方法?
- 30. 如何从Python中的静态方法获取(子)类名?
请不要”不要这样做! (可能除了调试,但即使那里测试可能会更好。) – 2011-12-27 13:04:21