Ich versuche, eine Funktion Kotlin Reflexion aufrufen, aber ich bin immer die Fehlermeldung:java.lang.IllegalArgumentException: Callable erwartet 4 Argumente, aber 3 wurden
java.lang.IllegalArgumentException: Callable expects 4 arguments, but 3 were provided.
Dies ist der Code tun die reflektierende Anruf:
annotation.listeners.forEach { listener: KClass<*> ->
listener.functions.forEach { function: KFunction<*> ->
if (function.name == "before") {
function.call(annotation.action, request, response)
}
}
}
I-Typen für listener
und function
gerade hinzugefügt haben die Frage besser lesbar zu machen.
Dies ist die Methode, die aufgerufen wird wird:
fun before(action: String, request: RestRequest, response: RestResponse)
überprüfen
zu verdoppeln, dass meine Typen korrekt sind, habe ich dies:
if (function.name == "before") {
println(annotation.action::class)
println(request::class)
println(response::class)
}
Diese Drucke (die die richtigen Typen für die benötigt wird, before
Funktion):
class kotlin.String class com.mycompany.RestRequest class com.mycompany.RestResponse
Was sollte der vierte Parameter sein?
ah, ja, es muss natürlich eine Instanz es auf rufen . –