快速上手 Kotlin 开发系列之动态代理

作者: changer0 | 来源:发表于2020-03-26 08:41 被阅读0次

    本节介绍 Kotlin 中没有反射的动态代理。

    Java 中的动态代理

    在讲 Kotlin 的动态代理之前先简单回顾下 Java 的动态代理,通过一个简单的例子说明下:

    首先,给出一个接口和其实现类:

    为了可以动态代理某个对象,我们实现 InvocationHandler 接口:

    通过 Proxy.newProxyInstance 方法创建代理对象,实现代理:

    Kotlin 中的动态代理

    Kotlin 在语言层面已经原生支持了动态代理,只需要一个 by 关键字就可以实现,通过示例了解下。

    首先,将上面的被代理的类使用 Kotlin 来实现:

    接着通过 by 关键字实现一个代理类:

    最后在 main 方法中创建代理类,并调用:

    需要注意的是,如果代理类中实现了被代理接口的方法,代理对象调用时实际执行的就是代理对象的所实现的方法。

    实际上,Kotlin 会将动态代理在编译以后转换为静态代理去调用,而 Java 的动态代理本质上是通过反射去调用的,所以 Kotlin 的动态代理一定要比 Java 的动态代理效率高。

    以上就是本节内容,欢迎大家关注~

    相关文章

      网友评论

        本文标题:快速上手 Kotlin 开发系列之动态代理

        本文链接:https://www.haomeiwen.com/subject/ohyfuhtx.html