LINQ

http://www.rubyist.net/~matz/20060128.htmlにて、LINQRubyならどう書くというようなことを見て、Javaならどうかと考えた。
まず、直感的に思いついたのがこれ。

名 学籍番号前半名
  = new Query<学生, 名>() {
      名 select(学生 p)
        { return p.名;}
      boolean where(学生 p)
        { return p.学生番号 <= 15;}
      int order(学生 p1, 学生 p2)
        { return p1.学生番号 - p2.学生番号;}
    }.from(学生名簿);

Javaの従来型の書き方に比べれば近いけど、まだ遠いな。
型推論が導入されるとどうなる?

学籍番号前半名
  = new Query<学生, 名>() {
      select(p)     { return p.名;}
      where(p)      { return p.学生番号 <= 15;}
      order(p1, p2) { return p1.学生番号 - p2.学生番号;}
    }.from(学生名簿);

あ、すごいすっきりした。これは許容範囲かも。
ただ、LINQは、そのままDBやXMLに適用可能だからな。