[Редактировать] Более новые версии Groovy допускают статическую проверку типов во время компиляции. Код, использующий эту аннотацию, работает быстрее, чем обычный Groovy, поскольку многие динамические проверки пропускаются.
Как сказал Сезар, проверка типов - это процесс во время выполнения, одна из основных причин того, что Groovy медленнее, чем Java (не то чтобы это действительно плохо).
Вы можете понять, почему это так, верно? Учитывая динамический характер Groovy, почти невозможно определить, было ли String расширено где-то еще в вашем коде, чтобы оно содержало метод noSuchMethod (). То же самое относится и к проверке типов элементов, поскольку вполне возможно удалить элемент одного типа и добавить элемент другого типа с с таким же именем позже в коде. Это, вероятно, не часто, но очень возможно.
Вопрос в том, сколько проверки типа вам действительно нужно? Вы вызываете метод, вы действительно должны знать, какие аргументы он принимает, или метод действительно существует. Использование проверки во время компиляции для экономии времени поиска не является основной полезностью компилятора.