重複の可能性:
注釈を作成して scala で取得する方法
他の例では、注釈付きクラスの注釈を取得します。私がやりたいことは、次のようなクラス フィールド (このテストではバージョン) の注釈を取得することです。
import java.lang.annotation.{RetentionPolicy, Retention}
import annotation.meta.field
class AttribField() extends scala.annotation.StaticAnnotation
object MyTypes { type Attrib = AttribField @field }
import MyTypes._
case class TestClass(@Retention(RetentionPolicy.RUNTIME)
@Attrib version: Option[String])
object TestMe {
def main(args: Array[String]) {
val testObj = new TestClass(version = Some("1"))
testObj.getClass.getDeclaredFields.foreach(field => {
field.setAccessible(true)
println("field: name=" + field.getName + " value=" + field.get(testObj))
field.getAnnotations.foreach(x => println("x="+x)) // nothing in here
field.getDeclaredAnnotations.foreach(x => println("y="+x)) // nothing in here
// does not even compile
// field.getAnnotation(classOf[AttribField])
})
}
}
特定の注釈があるかどうかをテストしてから、分岐します。しかし、私は行くことができません。私が見逃した基本的な何かがあるに違いありませんが、何ですか?