なんじゃくにっき

プログラミングの話題中心。

Scala de Design Pattern: Marker Interface

 Marker Interfaceパターンとはインターフェイスをマーキングのために使うパターン。
Java 5.0以降やScalaではアノテーションが使える。
 
 Scalaアノテーションは、Annotation traitがまずあって、
StaticAnnotaion と ClassfileAnnotation が Annotation を extends している。
 
 現状(Scala 2.8)ではScalaのライブラリにClassfileAnnotationは含まれるが、
これを継承してクラスを作成しようとするとエラーになる(将来的には実装される予定)。
JavaアノテーションのRetentionPolicy=RUNTIMEみたいなことはScalaではできない。
やりたい場合はJavaアノテーションを記述することになる。
 
 現在のところScalaで使えるアノテーションは全てがStaticAnnotationのサブクラス。
@native, @deprecated, @cloneable etc
 
 
自作アノテーションを作る場合はこんな感じに記述する。

class hoge extends StaticAnnotation {}