Как вы получаете аннотации Java-метода для работы в Scala
У меня есть два проекта, проект Scala и проект Java. Мой проект Scala ссылается на проект Java в пути сборки. В моем Java-проекте я объявляю следующую аннотацию:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
public String Name();
}
В моем проекте Scala я комментирую некоторые методы. Т.е.
class MyClass {
...
@MyAnnotation(Name="Blah")
def myMethod() {
...
}
}
В другом файле я пытаюсь извлечь аннотации.
var methods = myClassInstance.getClass().getDeclaredMethods()
var myMethod : Method = null
for (method <- methods) {
if (method.getName().equals("myMethod")) {
myMethod = method
}
}
var annotations = myMethod.getDeclaredAnnotations()
К несчастью, annotations
всегда пустой массив. Я делаю что-то в корне неправильно или просто упускаю что-то незначительное? Спасибо!
РЕДАКТИРОВАТЬ Первоначально я дважды аннотировал мой метод с myAnnotation, что неверно, как кто-то указал. Оказывается, это не проблема. Я все еще получаю пустой массив для annotations
, Не исключение бросается.
1 ответ
Я попробовал ваш код, проблема в том, что вы используете @MyAnnotation дважды для myMethod, что должно вызвать AnnotationFormatError: Двойная аннотация для класса
Когда я использую его один раз, отражение просто получает аннотации.