我可以识别我的通话对象吗?
我可以为A
的 classname 创建 stacktrace 但是如何访问A
的对象?
class A{
void method(){
new B().method();
}
}
class B{
void method(){
// can i recognize Object A ????
}
}
答案 0 :(得分:4)
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
最重要的元素是你正在寻找的。 p>
同时浏览this。
答案 1 :(得分:2)
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace()
的Javadoc:
数组的最后一个元素表示堆栈的底部, 这是序列中最近的方法调用。
以及每个StackTraceElement可以获得的文档
http://docs.oracle.com/javase/7/docs/api/java/lang/StackTraceElement.html
getClassName()
getFileName()
getLineNumber()
getMethodName()
答案 2 :(得分:1)
如果您确实需要来执行此操作,那么您应该将其合并到代码中。
class A{
void method(){
new B().method(this);
}
}
class B{
void method(A a){
System.out.println("I recognize 'a' as " + A);
}
}