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 разрешать методы с указанными в кавычках идентификаторами?

0 ответов

Другие вопросы по тегам