・<Java5のアノテーション>
→ <>>324-329,334の拡張> の形式で。

・修飾子が付くモノにしか付けられない
→ 変数の型宣言すべてに付けれる。メソッドのレシーバにも。
・コンパイル時、単発の「印」でしかない
→ アノテーションが付いた型は、付けた型の子型になる。さらに属性の値毎に別の子型になる。
→ キャストの可否(明示、暗黙)、実行時キャストチェックを定義できる。
・「どこ(メソッド、フィールド、パッケージ等)に付けられるか」しか指定できない
→ 「どの型に付けられるか」を指定できる
・アノテーションの属性には定数しか指定できない
→ 変数OK。演算もOK。演算はコンパイル時に行える。


これで、
型に保障された単位付き計算や、Generics機能そのもの、型安全Enumなど、
型機能によってコンパイル時に安全性を保障できる様々なバグ防止機能が作れる。

さらに、実行時キャストチェック定義によって、
Pascalの範囲型みたいの+強制DbCが、任意のクラスについて行える。