【发布时间】:2011-06-06 15:24:35
【问题描述】:
我想在 Java 中创建这样的对象,它将包含一些“调度程序”函数,如 Object getAttr(String name),它将接收所有属性访问尝试 - 所以,如果我会这样做 System.out.print(myObj.hello),实际代码将被转换为类似System.out.print(myObj.getAttr('hello')),如果我会做myObj.hello = 123,它应该执行为myObj.setAttr('hello', 123)。请注意,我应该可以使用任何属性名称,我事先不知道可能的名称列表。
那么,在这种情况下,有可能吗?
UPD#1:我正在为 JVM 编写新语言(不知何故,类似于 (J|P)ython,所以我们称之为 Jython),其意图是非常紧密的 Java 集成。想要的设计特性之一是能够从 Java 代码中无缝访问 Jython 对象属性,只需键入 jythonObject.some_attribute。所以这就是交易。
已关闭:通过 AspectJ 使用 AOP 似乎是解决此问题的唯一可能解决方案,因此感谢大家的帮助,尤其是 Thomas 提供了最广泛的答案:)
【问题讨论】:
标签: java attributes proxy introspection intercept