Учебники

Groovy — опционально

Groovy является «необязательным» типизированным языком, и это различие важно для понимания основ языка. По сравнению с Java, который является «строго типизированным» языком, при этом компилятор знает все типы для каждой переменной и может понимать и выполнять контракты во время компиляции. Это означает, что вызовы методов могут быть определены во время компиляции.

При написании кода на Groovy разработчикам предоставляется возможность предоставлять тип или нет. Это может предложить некоторую простоту в реализации и, при правильном использовании, может обеспечить надежное и динамичное обслуживание вашего приложения.

В Groovy необязательная типизация выполняется с помощью ключевого слова def. Ниже приведен пример использования метода def

Live Demo

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, не приводя свою кодовую базу в неразрывную путаницу, лучше всего использовать в своих приложениях философию «типизации».

Если мы переписываем приведенный выше код с использованием утиной типизации, он будет выглядеть так, как показано ниже. Имена переменных — это имена, которые чаще всего напоминают тип, который они представляют, что делает код более понятным.