2016-10-09 2 views
0

Я определил простую аннотацию в Скале, как этотПолучить все классы аннотированных с определенной аннотацией (ов)

case class MyAnnotation(value: String) extends StaticAnnotation 

, а затем некоторые классы, которые используют эту аннотацию

@MyAnnotation("en_US") 
class TestAnnotation 

Теперь я хотелось бы получить во время выполнения все классы, аннотированные такими аннотациями, но документация о mirrors и annotations в scala-reflect не совсем понятна: -/

Может ли кто-нибудь пролить свет на то, как выполнить такой поиск во время выполнения?

Спасибо!

ответ

0

Более here, скорее всего, был задан тот же вопрос, и было рекомендовано использовать reflections library. Here есть образец обработки аннотации с макросом.

Надеюсь, что эти ссылки будут вам полезны.

+0

Спасибо, но я уже видел этот ответ, и это неправильно. Для простого факта, что ["... Кроме того, ** подклассификация scala.annotation.ClassfileAnnotation не делает вашу аннотацию видимой как аннотацию Java во время выполнения, для чего требуется написать класс аннотации в Java."] (Http: // docs .scala-lang.org/обзоры/отражение/аннотаций наименования-оптические прицелы). Это, в свою очередь, делает библиотеку отражений бесполезной. То же самое касается последней ссылки, поскольку она выполняется во время компиляции, а не во время выполнения, как я спросил. Вкратце: аннотации runtime разбиты (следовательно, почему они все еще экспериментальны) – Polentino

+0

Да, но вы можете отменить аннотации java, если вам нужна такая функциональность. – tkachuko

+0

Действительно, но поскольку я начинаю проект с нуля в Scala, я просто хотел придерживаться языка как можно больше. И, поскольку это было в течение 12 лет, это довольно удручающе отметить, как эта проблема еще не решена ... – Polentino

Смежные вопросы