Groovy можно использовать по разному — для скриптов, для Grails, для быстрого написания прототипов, для DSL и т.д.
Меня же Groovy всегда привлекал как улучшенная Java. В самом деле — почти любой Java код будет валидным кодом Groovy — т.е. если не помнишь как что то делать в Groovy-way, можно всегда писать так, как принято в Java, а если помнишь — вот тебе и Closures, и удобные списки, и много других замечательных вещей.
Единственное, что мешало использовать Groovy для разработки production кода — отсутствие ошибок компиляции в большом числе случаев. Например если вызываешь несуществующий метод, обращаешься к несуществующей переменной и т.д.
Для многих Groovy фреймворков и библиотек это реально нужно (см. например работу с XML в Groovy), но если я пишу обычный код, мне это серьезно мешает.
Так вот, наконец в Groovy 2.0 появилась возможность сказать — проверяй в этом классе типы, существование методов и переменных!
Возьмем, например, такой класс:
Он комплируется без проблем.
Но если мы добавим
@TypeChecked
(эта аннотация может быть на классе или методе), то получим ошибки:
Также проверка автоматически включается, если мы включаем для класса статическую компиляцию аннотацией @CompileStatic
:
Теперь можно будет писать на Groovy всё то, что писалось на Java и не бояться проблем, пропущенных компилятором.
Полный список проверок можно найти здесь.
Было бы еще классно, если бы сделали проверку типов по умолчанию, а динамическую типизацию по аннотации…
Автор: javax