Метод установки в вашем примере должен называться setX
, например,
def a = new Object ()
a.metaClass.setX = { newValue ->
print "new value is ${newValue}"
}
a.x = 3
Это соглашение Java, которое определяет шаблон для методов setX
и getX
- часть имени свойства классаначинается с заглавной буквы.Это означает, что если вы хотите перехватить метод установки для поля с именем firstName
, метод установки, который создает компилятор Groovy, называется setFirstName(name)
.