如何在Scala 2.10中反映注释?

时间:2012-09-06 15:37:29

标签: scala reflection annotations scala-2.10

我试图发现特征的值是否有与之关联的注释。在查看了Scala 2.10-M7反射API后,我认为 getAnnotations 方法(位于 Symbol 中)可能是一个很好的候选者,但它返回一个空列表,如图所示在以下REPL会话中:

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()

这些“注释”是否与我试图处理的注释相同?我怎么知道 是否用 W 注释?

1 个答案:

答案 0 :(得分:6)

看起来像一个错误:https://issues.scala-lang.org/browse/SI-6325

更新。实际上,这不是一个错误,而是一个非显而易见的注释如何在Scala中工作的组合。有一种方法可以根据需要在特征中使用抽象注释的val。有关更多详细信息,请查看上述链接中的讨论。