У меня есть два проекта: проект scala и проект java. Мой проект scala ссылается на проект java в пути сборки. В моем Java проекте, я объявляю следующую аннотацию:Как получить аннотации метода java для работы в scala
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
public String Name();
}
В моем проекте лестницы, я аннотирование некоторых методов. То есть
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
всегда пустой массив. Я делаю что-то принципиально неправильное или я просто пропустил что-то незначительное? Благодаря!
EDIT Первоначально я аннотирования MyMethod с myAnnotation дважды, это неверно, так как кто-то указал. Оказывается, это не проблема. Я все еще получаю пустой массив для annotations
. Никакое исключение не выбрасывается.
Спасибо, что указал. К сожалению, это не проблема. Даже с одной аннотацией я все равно получаю пустой массив. Никакое исключение не выбрасывается – Jordan
Как вы это применили? Можете ли вы опубликовать пример? Благодаря! – Jordan
Как я уже сказал, я просто использую ваш опубликованный код. Ваш опубликованный код вызывает исключения (первая версия) и имеет ошибки компиляции (вторая версия, вы должны определить тип для строки «var myMethod = null»), после того как я их разрешу, он работает. И моя версия scala - 2.9.3 –