EMZETT.
Login

Kurz: > Achtung: In Groovy ist == ein Wertvergleich (equals), is() der Referenzvergleich. Das ist anders als in Java. Division mit / liefert Brüche als BigDecimal.

Teil des Kurses Groovy

Kapitel 8 von 8 im Kurs Groovy. Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

Operatoren und Besonderheiten

KonzeptGroovy
Variabledef x = 1
GString"Wert: ${x}"
Liste / Map[1, 2] / [a: 1]
Range1..5, 1..<5
Closure{ x -> x * 2 }
Elvisa ?: b
Sicherer Zugriffobj?.feld
Spreadliste*.methode()
Raumschiffa <=> b
Regex-Matchtext =~ /muster/
Potenz2 ** 10
Ganzzahldivision7.intdiv(2)
def zeile = { String a, String b -> println "${a.padRight(18)} $b" }
zeile("1 + 1", "${1 + 1}")
zeile("'a' * 3", "${'a' * 3}")
zeile("[1,2,3].sum()", "${[1, 2, 3].sum()}")
zeile("(1..4).sum()", "${(1..4).sum()}")
zeile("null?.size()", "${null?.size()}")
zeile("0 ?: 'leer'", "${0 ?: 'leer'}")
zeile("[3,1,2].sort()", "${[3, 1, 2].sort()}")
zeile("'abc'[1]", "${'abc'[1]}")
zeile("1.0 == 1", "${1.0 == 1}")
zeile("'a'.equals('a')", "${'a'.equals('a')}")
zeile("'a'.is('a')", "${'a'.is('a')}")
zeile("[1,2] == [1,2]", "${[1, 2] == [1, 2]}")
zeile("5 in 1..10", "${5 in 1..10}")
zeile("[a:1].a", "${[a: 1].a}")
zeile("Integer.MAX_VALUE", "${Integer.MAX_VALUE}")

Ausgabe:

1 + 1              2
'a' * 3            aaa
[1,2,3].sum()      6
(1..4).sum()       10
null?.size()       null
0 ?: 'leer'        leer
[3,1,2].sort()     [1, 2, 3]
'abc'[1]           b
1.0 == 1           true
'a'.equals('a')    true
'a'.is('a')        true
[1,2] == [1,2]     true
5 in 1..10         true
[a:1].a            1
Integer.MAX_VALUE  2147483647

Typische Fehler

def x = null
println x.length()

Fehlermeldung:

Cannot invoke method length() on null object
println unbekannteVariable

Fehlermeldung:

No such property: unbekannteVariable

Achtung

In Groovy ist == ein Wertvergleich (equals), is() der Referenzvergleich. Das ist anders als in Java. Division mit / liefert Brüche als BigDecimal.

Weiterführende Quellen

  • groovy-lang.org/documentation: offizielle Dokumentation
  • „Groovy in Action“ (Koenig u. a.)
  • Gradle- und Jenkins-Handbücher für den Praxiseinsatz
  • Spock (spockframework.org) für lesbare Tests

Merke

  • Groovy = Java mit Skript-Komfort: Closures, Collections, DSLs, Metaprogrammierung
  • Dynamisch und statisch einsetzbar; perfekt für Build- und Automatisierungsskripte
  • Gradle, Jenkins, Spock und Grails sind die wichtigsten Anwendungen

Übungsaufgabe

Schreibe ein Jenkins-ähnliches Pipeline-DSL mit stage("Name") { ... }.

Quiz zur Selbstkontrolle

== [1, 2] in Groovy?

  • true (richtig)
  • false
  • Fehler
  • null

Weiter im Kurs

Zurück: Nebenläufigkeit und Java-Integration

Alle Kapitel: Groovy im Überblick