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でアノテーションがどのように機能するかについての非自明な方法の組み合わせです。トレイト内の抽象的な注釈付きの値を希望どおりに機能させる方法があります。詳細については、前述のリンクの説明を参照してください。

于 2012-09-06T18:23:47.743 に答える