gpt4 book ai didi

java - 属性对象可以到达它所属的对象吗?

转载 作者:行者123 更新时间:2023-11-30 03:15:14 25 4
gpt4 key购买 nike

很抱歉这个问题可能很奇怪,但前段时间我使用了 python 的内省(introspection),我想知道 Java 1.8 中是否可以使用类似的东西。

假设我有一个来自 A 类的对象 a,在这种情况下

class A{ B b; }
class B{ public void f(){} }

我的问题是“f() 能知道a吗?”

显然,如果我添加反向链接,例如:

class A {
B b;
public A() { b = new B(this); }
}

class B {
A father;
public B(A a){ this.father = a; }
public void f(){}
}

但我的问题是,在一般情况下,没有像父亲这样的后面,是否有任何内省(introspection)机制可以让f()知道一个

最佳答案

您希望访问调用堆栈上方函数的参数。在普通 Java 中你无法做到这一点,但是你可以使用一些 AOP 框架,它可以维护一个影子堆栈,这样你就可以内省(introspection)它。

或者您可以使用内部类。内部类包含外部类实例的隐藏字段。可以使用语法 OuterClass.this 访问它。

class A{
public class B{
public void f() {
System.out.println(A.this.aField);
}
}
String aField;
B b = new B(); // Passes a hidden `this` parameter
}

关于java - 属性对象可以到达它所属的对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32787979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com