小编典典

检索方法或构造函数的调用者实例(不是类)

java

是否可以检索方法/构造函数的调用者实例?

该问题已经发布,但是每次答案都在谈论调用方类(使用stacktrace)而不是调用方实例时。如果存在解决方案,则可以很方便地构建对象图(具有常见的超级类型)并使用默认构造函数处理父级子级导航。

public class TestCallStack {
    public static class BaseClass {
        BaseClass owner;
//      //ok, this is the correct way to do it
//      public BaseClass(BaseClass owner) {
//          this.owner = owner;
//      }
        public BaseClass() {
            //this.owner = ???????; 
        }
    }
    public static class Parent extends BaseClass {
        Child child = new Child();
    }
    public static class Child extends BaseClass {
    }

    public static void main(String[] args) {
        Parent parent = new Parent();
        System.out.println(parent.child.owner==parent); // must be true
    }
}

阅读 225

收藏
2020-11-23

共1个答案

小编典典

您的直觉是正确的-这是不可能的。我个人认为这是一个 很好的 事情,因为它会导致代码相对于重构非常脆弱的(想象一下,拉一些代码伸到一个静态方法-
突然有一个在所有无来电显示的对象)。

如果要表达某种所有者关系,则应明确提供该所有者。

2020-11-23