9

我试图发现一个特征的值是否有一个与之关联的注释。在查看了 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()

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

4

1 回答 1

6

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

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

于 2012-09-06T18:23:47.743 回答