Ich versuche herauszufinden, ob dem Wert eines Merkmals eine Anmerkung zugeordnet ist. Ich den Scala 2,10-M7 Reflection-API Nach der Überprüfung gedacht, dass die Getannotations Methode (in Symbol) könnte ein guter Kandidat sein, aber es ist eine leere Liste zurückkehrt, wie in der folgenden REPL Sitzung gezeigt:Wie reflektiere ich Anmerkungen in Scala 2.10?
scala> class W extends scala.annotation.Annotation
defined class W
scala> trait A { @W val a: Int }
defined trait A
scala> typeOf[A].members.last
res0: $r.intp.global.Symbol = value a
scala> res0.getAnnotations
res1: List[$r.intp.global.AnnotationInfo] = List()
Sind diese "Anmerkungen" die gleichen Anmerkungen, die ich versuche zu behandeln? Wie kann ich feststellen, ob ein mit W annotiert ist?
Ich dachte Scala Annotationen wurden zur Laufzeit nicht beibehalten? –
Sie sollen nicht durch Java-Reflektion sichtbar sein, aber sie sollten in Scala Pickles gespeichert werden. Was ich jedoch übersehen habe, ist, dass Sie entweder 'StaticAnnotation' oder' ClassfileAnnotation' ableiten müssen, damit dies funktioniert. Subclassing nur "Annotation" wird es nicht schneiden, zumindest nach Scaladoc. –
In ein paar Tagen, wenn ich Zeit habe, werde ich das beabsichtigte Verhalten klären, gegebenenfalls Korrekturen anwenden und die Antwort entsprechend aktualisieren. –