-アノテーション

http://d.hatena.ne.jp/taichitaichi/20050621/1119375487 で太一さんが論考してますが、勉強会ではそういう話してたのですが。面白そうでしたね。さて、私はアノテーションはその意味でなく、現象として考察してみたいと思います。中身はまだ触ってないから。。。
J2SE5.0の新機能において、私が一番うれしいのはジェネリックスです。C++のテンプレートのように強固に型付けされたメタコードが書けるのがうれしい。java.utilがSTL化してハッピー。しかし、これはJ2SE1.4でも、キャストすればいいことであって、そこに我慢があったとしても重要度はすこし落ちるかなと。
一方で、アノテーションはこれまでできなかったことをやる機能だと思います。XDocletとかXMLの設定ファイルとか、同様一部機能を満たすものは、これまでもいろいろありますが、これらはコンパイラ・言語仕様外で型付けされないいわばアプリケーションレイヤーで実現されていることです。アノテーションはクラス・メソッド・メンバーなどのリフレクションでもすでに引けるところに加え、引数やローカル変数にもツールやコードからアクセスできるメタ情報を付加することができます。また、リフレクションとは異なり、型チェックされ、かつ構造化・階層化している。よってこれまでコンパイラで落としていたものが拾えるようになりました。この辺に現在のJavaフレームワーク実装者がアノテーションを取り入れることがブームとなってる要因があるのではないでしょうか。アノテーション以外はコーディングテクニックでどうにでもなるけど、アノテーションの実現できること(もしくは将来開発できるテクニックへの予感)がアノテーション無しではうまくできない点。
とりあえずは引数の情報が補完できる点がうれしいですね。