無名クラスでクロージャ風味

そもそもrubyやJavaScrpit的な言語をあまり使ったことないのでクロージャについて誤解してるような気もするけどとりあえず書いてみた。
ProcessingのコードだけどシンタックスJavaにしてる。

abstract class func { abstract void run(Object arg);  }

class hoge {
  class moke{ int _val; moke(int val){_val=val;} }

  void find(ArrayList list, func f) {
    for(int i=0; i<list.size(); i++) {
      if(f!=null) { f.run(list.get(i)); }
    }
  }

  hoge() {
    ArrayList l = new ArrayList();
    l.add(new moke(10)); l.add(new moke(20));
    l.add(new moke(30)); l.add(new moke(40));
    
    find(l, new func() {
      void run(Object arg) {
        moke m = (moke)arg;
        println(m._val);
      }
    });
  }
}

size(300, 300); new hoge();

うむ。やっぱりvim上で更新できたら便利かもしれない。