我想在 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 提供了最广泛的答案:)