Как получить значения аннотации из компилятора презентаций Scala? - PullRequest
2 голосов
/ 23 ноября 2011

Поскольку я хочу сгенерировать код Scala из аннотированного класса Scala, мне нужно получить значения из аннотаций этого класса.

public @interface TestAnnotation {
    public String name();
    public String description();
    public String[] tags() default { "Test" };
}
@TestAnnotation(name = "TestName", description = "TestDescription")
class MyClass

Моя проблема в том, что компилятор презентаций Scala не дает мне значение для tags. Я получаю доступ к значениям с помощью следующего кода:

import tools.nsc.interactive.Global._    

val ast = ...
val ans = ast.symbol.annotations // which returns me a List of AnnotationInfo
ans.head.assocs // returns: List((name, "TestName"), (description, "TestDescription"))

Так, как я могу получить значение по умолчанию tags?

1 Ответ

1 голос
/ 24 ноября 2011

Тот же вопрос был недавно задан в списке рассылки на языке scala. Здесь - ссылка на тему.

Краткий ответ: в настоящее время это невозможно. Реализация этого требует, к сожалению, большого объема работы. Причина в том, что компилятор Scala должен иметь полный анализатор Java. В настоящее время он может только анализировать объявления в исходном коде Java, он пропускает все «правые стороны» (тела методов, определения полей). Смотрите тему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...