lundi 18 juillet 2016

Scala returns no annotations for a field

I have this:

class Max(val value : Int) extends StaticAnnotation{}

class Child() extends Parent {
  @Max(5) val myMember= register("myMember")
}

abstract class Parent {
     def register(fieldName : String) = {
             val cls = getClass
             import scala.reflect.runtime.universe._
             val mirror = runtimeMirror(cls.getClassLoader)
             val clsSymbol = mirror.staticClass(cls.getCanonicalName)
             val fieldSymbol = clsSymbol.typeSignature.member(TermName(fieldName))
             println(s"${fieldSymbol.fullName}   " + fieldSymbol.annotations.size)
     }
}

this does not work, somehow, it returns 0 annotations, if instead, I put the annotation on the class, then I can read it fine. Why?





Aucun commentaire:

Enregistrer un commentaire