Я хочу создать такой объект в 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.Одной из требуемых особенностей дизайна является возможность беспрепятственного доступа к атрибутам объектов Jython из кода Java, просто набрав jythonObject.some_attribute
.Итак, вот сделка.
Закрыто: Использование AOP через AspectJ, кажется, единственно возможное решение для этого, поэтому спасибо всем за помощь, и особенно Томасу за самый расширенный ответ:)