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中也常用符号来代替字符串.