Получение списка аннотированных функций в Kotlin с использованием отражения - PullRequest
1 голос
/ 26 октября 2019

Я новичок в Kotlin и хочу сделать следующее:

  1. Аннотировать некоторые функции с помощью аннотации, например, "Исполняемый файл"

  2. Во время выполнения получите все функции с этой аннотацией

  3. Проверьте свойство аннотации и, если оно соответствует условию, вызовите функцию

У меня есть следующий код

annotation class Executable(val name : String)

@Executable("doSomething")
fun stepDoSomething (param1 : String) {
    println("I am a step that does something! I print $param1")
}

Однако мне неясно, как получить все функции с аннотацией «Исполняемый файл» во время выполнения и проверить их.

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 26 октября 2019

Для этого вам понадобится сканер пути к классам, например ClassGraph . Сканеры Classpath предлагают API-интерфейсы для поиска классов на основе различных критериев, таких как, в каком пакете они находятся, какой интерфейс они реализуют или какие у них есть аннотации. В случае ClassGraph метод ScanResult имеет метод getClassesWithMethodAnnotation(String name). Когда у вас есть все эти классы, вы можете использовать обычное отражение, чтобы найти, какие методы в этих классах имеют конкретную аннотацию, которую вы ищете, и проверить свойства аннотаций. Здесь - хороший обзор того, как создать аннотацию и проверить ее с помощью отражения.

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