Java 检索方法或构造函数的调用方实例(不是类)
是否可以检索方法/构造函数的调用方实例 这个问题已经发布了,但每次回答都是关于调用方类(使用stacktrace)而不是调用方实例。 如果存在一个解决方案,那么构建对象图(使用一个通用的超类型)并使用默认构造函数处理父子导航将非常方便Java 检索方法或构造函数的调用方实例(不是类),java,inheritance,stack-trace,callstack,Java,Inheritance,Stack Trace,Callstack,是否可以检索方法/构造函数的调用方实例 这个问题已经发布了,但每次回答都是关于调用方类(使用stacktrace)而不是调用方实例。 如果存在一个解决方案,那么构建对象图(使用一个通用的超类型)并使用默认构造函数处理父子导航将非常方便 public class TestCallStack { public static class BaseClass { BaseClass owner; // //ok, this is the correct way to d
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
}
}
你的直觉是正确的——这是不可能的。就我个人而言,我认为这是一件好事,因为它会使代码在重构方面变得非常脆弱(想象一下将一些代码拉到一个静态方法中——突然之间根本就没有调用方对象) 如果您想要表达某种所有者关系,那么应该显式地提供该所有者