Ответ 1
Этот ответ основан на Scala 2.8.
// Will be visible to the Scala compiler, but not in the class file nor at runtime.
// Like RetentionPolicy.SOURCE
final class MyAnnotation extends StaticAnnotation
// Will be visible stored in the annotated class, but not retained at runtime.
// This is an implementation restriction, the design is supposed to support
// RetentionPolicy.RUNTIME
final class MyAnnotation extends ClassfileAnnotation
Подробную информацию см. в разделе 11 "Пользовательские аннотации" в Scala Ссылка См. Например: @tailrec.
ОБНОВЛЕНИЕ Предупреждение о компиляторе говорит лучше всего:
>cat test.scala
final class MyAnnotation extends scala.ClassfileAnnotation
@MyAnnotation
class Bar
>scalac test.scala
test.scala:1: warning: implementation restriction: subclassing Classfile does not
make your annotation visible at runtime. If that is what
you want, you must write the annotation class in Java.
final class MyAnnotation extends scala.ClassfileAnnotation