如何在Kotlin中为类中的每个函数调用自动调用函数

时间:2019-07-17 01:40:40

标签: kotlin

我有一个具有多种功能的课程

class Foo() {
    fun one() {
        //do something
    }

    fun two() {
        // do something
    }

    fun three() {
        // do something
    }
}

如何触发对我拥有的Logger对象的调用,以便在日志中可以看到所有已访问或已调用的函数,而无需在每个函数上都明确放置log调用以保持代码干净。我正在尝试对服务api调用中调用的所有功能进行完整的日志跟踪,但是我不想有这样的内容

class Foo() {
    fun one() {
        log.call()
        //do something
    }

    fun two() {
        log.call()
        // do something
    }

    fun three() {
        log.call()
        // do something
    }
}

2 个答案:

答案 0 :(得分:1)

您无法在普通的Kotlin中做到这一点。但这正是Aspect-Oriented Programming的目的。

我还没有使用过它,但是如果您想在Kotlin中使用它,可以看看Spring AOP。另请参见讨论herethis问题。

答案 1 :(得分:1)

在Java中,我将编写一个IvocationHandler来创建动态代理。参见this question