获取对试图创建我的对象的引用

时间:2011-06-28 04:32:59

标签: java object

假设有一个名为Node的类和另一个名为Table的类。节点对象可以创建Table对象。显然,然后调用Table类的构造函数。是否有可能从Table构造函数中获取对创建此Table实例的Node对象的引用?一种方法是,如果在创建对象时,我强制Node对象将“this”作为参数传递给Table构造函数。还有其他方法不需要传递参数吗?

3 个答案:

答案 0 :(得分:2)

我相信你可以使用Thread.getCurrentThread.getStackTrace()来访问调用堆栈并找出调用它的类名。 e.g。

Thread.getCurrentThread().getStackTrace()[1].getClassName();

但是如果你想访问该对象的实例,那么我认为访问它的唯一方法是将'this'传递给构造函数。

答案 1 :(得分:1)

在Java语言中获取对“调用”对象(调用方法,构造函数等的实例)的引用的唯一方法是将“this”对象引用传递给“接收者”需要知道的方法。没有其他方法可以使用普通Java,AFAIK。

答案 2 :(得分:0)

这是一个完整的例子

public class GivesNameOfCallingClass {
//constructor
    public GivesNameOfCallingClass() {
        try {
            throw new Exception("Error");
        }
        catch (Exception e) {
            System.out.println(e.getStackTrace()[1].getClassName());
        }
    }
}

和测试类

public class GetNameOfCallingClassTest {
    public static void main(String[] args) {
        new GivesNameOfCallingClass();
    }
}