Привязка интерфейса/класса к любому классу «начисто»JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Привязка интерфейса/класса к любому классу «начисто»

Сообщение Anonymous »

При наличии произвольного класса POJO я хочу перехватить все установщики и выполнить некоторые «магические действия» для каждого экземпляра. Естественно, я подумал об AspectJ/AOP.
  • Я определил аннотацию маркера
  • Я определил @Aspect с поведением perthis(), которое перехватывает все методы установки
  • Я добавил это в @Aspect, чтобы привязать поведение к любым объектам, отмеченным @MyInterface:

    Код: Выделить всё

    @DeclareParents(value = "@MyInterface *", defaultImpl = MyInterfaceImpl.class)
    private MyObject myObject = null;
    
  • Интерфейс имеет этот метод:

    Код: Выделить всё

    Map getMagicStuff();
    Этот метод реализован в MyInterfaceImpl
Это все работает как POC и я могу это сделать:

Код: Выделить всё

((MyObject) obj).getMagicStuff();
Но это некрасиво. Я хочу уметь:

Код: Выделить всё

someObject.getMagicStuff();
Я провел некоторое тестирование, и если я заставлю свой POJO реализовать интерфейс, то AspectJ не «перезапишет его».
В идеальном случае мире, я бы получил поведение, подобное Lomboks @Getter, но для этого требуется поддержка IntelliJ, а также работа с деревом AST и тому подобное.
Я знаю, что могу определить метод по умолчанию в интерфейсе, но у него не будет доступа к реализации.
Как это сделать?

Подробнее здесь: https://stackoverflow.com/questions/781 ... ss-cleanly
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»