Ответ 1
Closure - это экземпляр класса Closure, который реализует логику Call. Он может быть передан в качестве аргумента или назначен переменной. Он также имеет некоторую логику, связанную с доступом к переменной области и делегированием вызовов.
Методы - это обычные методы Java. Ничего особенного.
И да, у анонимных внутренних классов есть много стандартного кода для выполнения простых действий.
Для сравнения:
button.addActionListener(
new ActionListener() {
public void actionPerformed( ActionEvent e ) {
frame.dispose();
}
}
);
против
button.addActionListener { frame.dispose() }
С SO Groovy есть связанный вопрос : замыкания или методы и следующие ссылки на руководство пользователя, содержащее много полезной информации.
Закрытие в Groovy - это открытый анонимный блок кода, который может принимать аргументы, возвращать значение и присваиваться переменной. Закрытие может ссылаться на переменные, объявленные в окружающей области видимости. В противоположность формальному определению замыкания, замыкание в языке Groovy также может содержать свободные переменные, которые определены вне его окружения. Разрывая формальную концепцию замыкания, он предлагает множество преимуществ, которые описаны в этой главе.