2

我可以识别我的调用对象吗?
我可以为类名创建堆栈跟踪,但如何访问 的对象?AA

class A{
    void method(){
        new B().method();
    }
}

class B{
    void method(){
        // can i recognize Object A ????
    }
}
4

3 回答 3

4

使用StrackTraceElement

StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();

顶部元素是您要查找的内容。

也经过这个

于 2013-11-04T13:05:02.210 回答
2
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace()  

文档:

数组的最后一个元素表示堆栈的底部,它是序列中最近的方法调用。

以及您可以从每个 StackTraceElement 获得的文档

http://docs.oracle.com/javase/7/docs/api/java/lang/StackTraceElement.html

getClassName()
getFileName()
getLineNumber() 
getMethodName()
于 2013-11-04T13:06:28.643 回答
1

如果您确实要这样做,那么您应该将其合并到代码中。

class A{
    void method(){
        new B().method(this);
    }
}

class B{
    void method(A a){
        System.out.println("I recognize 'a' as " + A);
    }
}
于 2013-11-04T14:00:28.500 回答