[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 12456] JDK 7 で導入検討 中のクロージャ



高橋(徹)です。

Neal Gafter氏のブログに、JDK 7で導入検討中のクロージャのコード例が
記載されています。
http://gafter.blogspot.com/2006/08/use-cases-for-closures.html

() { 文... }
という記述になるみたいですね。ちょっと違和感ありますが、
匿名クラスを書くよりシンプルです。クロージャはコンパイル時に
匿名クラスに書き換えられるようなので、糖衣構文な機能です。
  void sayHelloInAnotherThread(Executor ex) {
    ex.execute(() {
        System.out.println("Hello");
    });
  }
これは、コンパイル後
  void sayHelloInAnotherThread(Executor ex) {
    ex.execute(new Runnable() {
        public void run() {
            System.out.println("Hello");
        }
    });
  }


また、上記ブログでは、さらに同期に関して興味深い使用例が取り上げ
られています。C++のRAIIに匹敵する機能です。
  withLock(lock) {
    ...
  }

  java.util.concurrentのLockをsynchronzied文同様に囲ってしまう
 機能です。これは、コンパイル後、
 try {
    ...
  } finally {
    lock.unlock();
  }
  に書き換えられるようです。

#ざっと流し読みしただけなので間違いあるかもしれません。

--
TAKAHASHI,Toru
torutk@xxxxxxxxxxxx