Возьмём довольно частую задачку: есть несколько значений первой переменной, нужно сделать присвоить второй переменной какое-то значение, в зависимости от первой переменной, т.е. value mapping.
В джаве это делается примерно так:
String alertClass = "";
switch(code.toUpperCase().charAt(0)) {
case 'U':
alertClass = "alert";
break;
case 'P':
alertClass = "alert-error";
break;
case 'B':
alertClass = "alert-warning";
break;
case 'C':
alertClass = "alert-info";
break;
}
// now alertClass has value
А теперь в groovy с помощью анонимного замыкания:
def alertClass = { code ->
switch(code[0]?.toUpperCase()) {
case 'U': return 'alert'
case 'P': return 'alert-error'
case 'B': return 'alert-warning'
case 'C': return 'alert-info'
}
}(trouble.getCode())
По сути - тот же switch, но без синтаксического шума. И так во всём. Особенно при работе с коллекциями, анонимными классами, null-safe операциями.
Именно поэтому простота java раздражает на столько, что кидаюсь на всякие kotlin, scala, etc..