MissingMethodException при добавлении String.metaClass.call с последующим его использованием в строковом литерале
Я пытаюсь сделать
String
/GString
объекты, вызываемые чем-то вроде
String.metaClass.call = { println toUpperCase() + " " + it() }
Это производит
MissingMethodException
при вызове литералов, хотя и не всегда:
def a = 'abc'
a{ 2 * 3 } //ABC 6 -> OK
'a'{ 2 * 4 } //ABC 8 -> OK
'abc'{ 2 * 5 } //MissingMethodException -> ERROR
Ошибка:
groovy.lang.MissingMethodException: No signature of method: ConsoleScript11.abc()
is applicable for argument types: (ConsoleScript11$_run_closure4)
Я пропущу тот факт, что
'a'{ 2 * 4 }
работает пока
'abc'{ 2 * 5 }
нет. Мой вопрос действительно таков: есть ли способ заставить вызовы литералов работать без попытки Groovy разрешать методы с указанными в кавычках идентификаторами?