12

ここに画像の説明を入力

含まれている図を注意深く見ると、Eclipse IDE を使用して Groovy コードをリファクタリングし、メソッドをクロージャーに、またはその逆に変換できることがわかります。では、クロージャーとは正確には何ですか? メソッドとはどう違うのでしょうか? 誰かがクロージャーの使用の良い例と、それが便利な機能である理由を教えてもらえますか? 匿名の内部クラスは十分ではありませんでしたか?

4

4 に答える 4

16

Closure は、Call ロジックを実装するClosure クラスのインスタンスです。引数として渡すか、変数に割り当てることができます。また、スコープ変数へのアクセスと呼び出しの委任に関連するロジックもいくつかあります。

メソッドは通常の Java メソッドです。特にない。

はい、匿名の内部クラスには、単純なアクションを実行するための定型コードがたくさんあります。

比較:

button.addActionListener(
  new ActionListener() {
     public void actionPerformed( ActionEvent e ) {
          frame.dispose();
     }
  }
);

button.addActionListener { frame.dispose() }

SO Groovy : Closures or Methodsに関する関連する質問 と、多くの有用な情報を含むユーザー ガイドへの次のリンクがあります。

  1. http://groovy-lang.org/closures.html

Groovy のクロージャーは、オープンで匿名のコード ブロックであり、引数を取り、値を返し、変数に割り当てることができます。クロージャは、周囲のスコープで宣言された変数を参照できます。クロージャーの正式な定義とは対照的に、Groovy 言語のクロージャーには、周囲のスコープ外で定義された自由変数を含めることもできます。クロージャの正式な概念を破りながら、この章で説明するさまざまな利点を提供します。

于 2014-02-20T11:07:31.213 に答える