Перехватчик установщик свойства в Groovy - PullRequest
0 голосов
/ 22 октября 2018

Как я могу перехватить динамический установщик свойств в groovy?

Вот что я пробовал:

def a = new Object ()
a.metaClass.setx = { newValue ->
   print "new value is ${newValue}"
}
a.x = 3

Я хочу, чтобы код выше печатал "новое значение 3"

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Groovy создает синтетический метод доступа (метод setter) только в том случае, если не определена реализация.

Если вы создадите метод setX в Object, он будет делать то, что вы пытаетесь сделать.Первый ответ технически верен, но рефлексия - это мощный инструмент, с которым нужно обращаться осторожно, и его не следует использовать там, где он не нужен.

0 голосов
/ 22 октября 2018

Метод установки в вашем примере должен называться setX, например,

def a = new Object ()
a.metaClass.setX = { newValue ->
   print "new value is ${newValue}"
}
a.x = 3

Это соглашение Java, которое определяет шаблон для методов setX и getX - часть имени свойства классаначинается с заглавной буквы.Это означает, что если вы хотите перехватить метод установки для поля с именем firstName, метод установки, который создает компилятор Groovy, называется setFirstName(name).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...