Object getAttr(String name)
すべての属性アクセス試行を受け取るような「ディスパッチャ」関数を含むようなオブジェクトを Java で作成したいので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 統合を意図しています。必要な設計機能の 1 つは、単に入力するだけで Java コードから Jython オブジェクト属性にシームレスにアクセスできる機能ですjythonObject.some_attribute
。これが取引です。
終了: AspectJ を介して AOP を使用することが、これに対する唯一の可能な解決策のようです。そのため、助けてくれた皆さん、特に Thomas に最も広範な回答をありがとう:)