作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
很抱歉这个问题可能很奇怪,但前段时间我使用了 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/
我是一名优秀的程序员,十分优秀!