Groovy является «необязательным» типизированным языком, и это различие важно для понимания основ языка. По сравнению с Java, который является «строго типизированным» языком, при этом компилятор знает все типы для каждой переменной и может понимать и выполнять контракты во время компиляции. Это означает, что вызовы методов могут быть определены во время компиляции.
При написании кода на Groovy разработчикам предоставляется возможность предоставлять тип или нет. Это может предложить некоторую простоту в реализации и, при правильном использовании, может обеспечить надежное и динамичное обслуживание вашего приложения.
В Groovy необязательная типизация выполняется с помощью ключевого слова def. Ниже приведен пример использования метода def —
class Example { static void main(String[] args) { // Example of an Integer using def def a = 100; println(a); // Example of an float using def def b = 100.10; println(b); // Example of an Double using def def c = 100.101; println(c); // Example of an String using def def d = "HelloWorld"; println(d); } }
Из вышеприведенной программы мы видим, что мы не объявили отдельные переменные как Integer, float, double или string, даже если они содержат значения этих типов.
Когда мы запустим вышеуказанную программу, мы получим следующий результат —
100 100.10 100.101 HelloWorld
Необязательная типизация может быть мощной утилитой во время разработки, но может привести к проблемам с удобством сопровождения на более поздних этапах разработки, когда код становится слишком обширным и сложным.
Чтобы получить представление о том, как вы можете использовать необязательную типизацию в Groovy, не приводя свою кодовую базу в неразрывную путаницу, лучше всего использовать в своих приложениях философию «типизации».
Если мы переписываем приведенный выше код с использованием утиной типизации, он будет выглядеть так, как показано ниже. Имена переменных — это имена, которые чаще всего напоминают тип, который они представляют, что делает код более понятным.