如何识别调用对象?

时间:2013-11-04 13:03:23

标签: java

我可以识别我的通话对象吗?
我可以为A classname 创建 stacktrace 但是如何访问A的对象?

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

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

3 个答案:

答案 0 :(得分:4)

使用StrackTraceElement

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

最重要的元素是你正在寻找的。

同时浏览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);
    }
}