Следующий код не компилируется (Output
не относится к типу java.reflect.annotation.Annotation
):
class Output(val name : String) extends Annotation
class Block {
def outputs {
for {
method <- this.getClass.getMethods
val a = method.getAnnotation(classOf[Output])
if a != null
} {
println(a.name)
}
}
}
class Arithmetic[T: Numeric](val A: Connector[T], val B: Connector[T]) extends Block {
@Output("Sum") def Sum = new Connector({ A.Value + B.Value })
@Output("Difference") def Diff = new Connector({ A.Value - B.Value })
@Output("Multiply") def Mul = new Connector({ A.Value * B.Value })
}
Есть ли способ добиться отражения во время выполнения над аннотированными элементами?