Как вы получаете аннотации 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: Двойная аннотация для класса

Когда я использую его один раз, отражение просто получает аннотации.

Другие вопросы по тегам