我可以识别我的调用对象吗?
我可以为类名创建堆栈跟踪,但如何访问 的对象?A
A
class A{
void method(){
new B().method();
}
}
class B{
void method(){
// can i recognize Object A ????
}
}
我可以识别我的调用对象吗?
我可以为类名创建堆栈跟踪,但如何访问 的对象?A
A
class A{
void method(){
new B().method();
}
}
class B{
void method(){
// can i recognize Object A ????
}
}
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
顶部元素是您要查找的内容。
也经过这个。
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace()
文档:
数组的最后一个元素表示堆栈的底部,它是序列中最近的方法调用。
以及您可以从每个 StackTraceElement 获得的文档
http://docs.oracle.com/javase/7/docs/api/java/lang/StackTraceElement.html
getClassName()
getFileName()
getLineNumber()
getMethodName()
如果您确实需要这样做,那么您应该将其合并到代码中。
class A{
void method(){
new B().method(this);
}
}
class B{
void method(A a){
System.out.println("I recognize 'a' as " + A);
}
}