Я хочу определить некоторые аннотации и использовать их в Scala.
Я посмотрел на источник Scala, найденный в пакете scala.annotation
, есть такие аннотации, как tailrec
, switch
, elidable
и т.д. Поэтому я определил некоторые аннотации, как они это делают:
class A extends StaticAnnotation
@A
class X {
@A
def aa() {}
}
Затем я пишу тест:
object Main {
def main(args: Array[String]) {
val x = new X
println(x.getClass.getAnnotations.length)
x.getClass.getAnnotations map { println }
}
}
Он печатает некоторые странные сообщения:
1
@scala.reflect.ScalaSignature(bytes=u1" !1* 1!AbCaE
9"a!Q!! 1gn!!.<b iBPE*,7
Ii#)1oY1mC&1'G.Y(cUGCa#=S:LGO/AA!A 1mI!)
Кажется, я не могу получить аннотацию aaa.A
.
Как я могу правильно создать аннотации в Scala? И как их использовать и получать?