Котлин: Получить значения параметров метода - PullRequest
0 голосов
/ 15 октября 2018

Я пытаюсь получить значения параметров, передаваемых методу, который я пересекаю.Я получаю это прямо сейчас, используя аргументы точки соединения.

Код:

@Around("@annotation(Log)")
fun log(joinPoint: ProceedingJoinPoint): Any {

    val signature = joinPoint.signature as MethodSignature
    val methodName = signature.method.name
    val parameterTypes = signature.method.parameterTypes
    var paramValues = ""

    // TODO: make this a bit more useful
    logger.info("begin execution of $methodName")

    val startTime = System.currentTimeMillis()
    val result = joinPoint.proceed()
    joinPoint.args.iterator().forEach {x -> paramValues += x.toString()}

    logger.info("complete execution of $methodName($paramValues) took " +
            (System.currentTimeMillis() - startTime)/1000.0 + "s")

    return result
}

Я хочу знать, есть ли способ получить его (значения параметров)используя метод отражения?

Я попытался получить значения таким образом, но безуспешно, и в итоге использовал joinPoint для его получения.

1 Ответ

0 голосов
/ 15 октября 2018

Отражение - это в основном способ чтения данных из файлов .class.Его нельзя использовать для доступа к информации, которая существует только во время выполнения, например, к параметрам отдельных вызовов методов.

...