Я столкнулся с проблемой метапрограммирования Groovy, которую не могу решить.
При добавлении статического метода foo () в класс FooBar, тогда FooBar.foo () работает как положено:
FooBar.metaClass.static.foo = {
println "hello"
}
FooBar.foo()
Однако вместо этого я добавляю тот же статический метод foo () к классу Object, затем FooBar.foo () завершается с ошибкой MissingMethodException:
Object.metaClass.static.foo = {
println "hello"
}
FooBar.foo()
// groovy.lang.MissingMethodException:
// No signature of method: FooBar.foo() is applicable for argument types:
// () values: []
Почему это? Не следует ли Object.metaClass.static.foo = { .. }
добавить foo () также в FooBar?