欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

kotlin成员函数的所有者

程序员文章站 2022-07-14 12:40:03
...

kotlin可以获得函数的所有者和绑定的对象相关的信息. 假设有下面两个类:

 

 class A(){
       fun fa(){}
 }
 class B: A()

val KFunction<*>.ownerClass: KClass<*> get() {       
        return (this as FunctionReference).owner as KClass<*>
}

 可以通过KFunction.ownerClass来获取所有者类型, 下面是测试结果:

 A::fa.ownerClass => A::class
 A()::fa.ownerClass => A::class
 B::fa.ownerClass => B::class
 B()::fa.ownerClass => B::class

这在web开发中有用, 假设一个类是控制器

class PersoController:Controller(){
        fun listAction(){
        }
}

重定向的函数可以这么写

redirect(PersonController::listAction)

 为什么不直接用字符串呢? 比如: redirect("person/list"). 

字符串在重构时容易落下, 减少犯错误的几率就是提高效率. 

ruby中也常用符号来代替字符串.

 

相关标签: kotlin