метод аннотаций kotlin во время выполнения

#android #kotlin #annotations

Вопрос:

Я хотел бы знать, как изменить параметры, передаваемые методу, с помощью аннотаций в kotlin

например

 @Add fun method(n: Int, m: Int) -gt; "what I want" method(n, m   n)  

До сих пор у меня есть этот процессор, но я не знаю, как закончить работу, у кого-нибудь есть идея?

 @AutoService(Processor::class) class ConstantProcess : AbstractProcessor() {   override fun getSupportedSourceVersion(): SourceVersion {  return SourceVersion.latestSupported()  }   override fun getSupportedAnnotationTypes(): MutableSetlt;Stringgt; {  return mutableSetOf(  Constant::class.java.name  )  }   override fun process(annotations: MutableSetlt;out TypeElementgt;?, roundEnv: RoundEnvironment?): Boolean {   if (roundEnv == null) {  processingEnv.noteMessage { "RoundEnvironment is NULL hence skip the process" }  return false  }  if (annotations == null || annotations.isEmpty()) {  processingEnv.noteMessage { "TypeElement is NULL or empty hence skip the process" }  return false  }   val elements = roundEnv.getElementsAnnotatedWith(Constant::class.java)   // ?????????   return true  }   fun ProcessingEnvironment.noteMessage(msg: () -gt; String) = this.messager.printMessage(Diagnostic.Kind.NOTE, msg()) }  

Комментарии:

1. Процессоры аннотаций не позволяют изменять существующие классы, только создавать новые.

2. могу ли я добавить дополнительное поведение перед выполнением функции во время выполнения?

3. Нет, ты не можешь. Вы можете создать дополнительную функцию/расширение, которое будет вызывать исходную функцию. Чтобы изменить существующий method() , вам потребуется реализовать плагин компилятора и/или использовать некоторую библиотеку для обработки байт-кода.