Locked History Actions

scala/annotations

アノテーション

参考

Javaに劣るScalaの機能

  • 実行時に参照可能なアノテーションはScalaでは定義できない
    それらはJavaコードで定義してScalaで利用するようにする。

  • 実行時に参照不可能なアノテーションは定義できる?
    しかし、そのようなものは大して意味が無い。

サンプル

package testing;
import java.lang.annotation.*;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@interface SomeAnno {
  String something();
}

@SomeAnno(something="/foo/bar")
class AnnoTest {  
}

class NoTest {
}

object Annotations {

  def main(args: Array[String]) {    
    val someAnno = classOf[AnnoTest].getAnnotation(classOf[SomeAnno])
    println(someAnno.something)    
    val noAnno = classOf[NoTest].getAnnotation(classOf[SomeAnno])
    println(noAnno)
  }
}

実行結果

/foo/bar
null