`
entaoyang
  • 浏览: 6031 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

kotlin成员函数的所有者

阅读更多

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

 

分享到:
评论

相关推荐

    Programming_Kotlin

    本部分还会讨论函数的定义和使用,包括单表达式函数、成员函数、局部函数、顶级函数、命名参数、默认参数、扩展函数、多重返回值、中缀函数,以及Kotlin对操作符的重载。 本书的结构分为以下几个部分: 1. 开始使用...

    android kotlin 学习教程

    本教程旨在为初学者及有一定经验的开发者提供一个全面、系统的学习路径,帮助大家掌握Kotlin语言及其在Android开发中的应用。Kotlin是一种现代、简洁、功能强大的编程语言,它为Android开发带来了全新的体验。 ####...

    Kotlin官方参考文档中文版

    Kotlin官方参考文档中文版是一本全面而详细的指南,覆盖了Kotlin语言的所有方面。对于想要学习或深入研究Kotlin的开发者来说,这是一本不可或缺的手册。通过阅读本书,读者不仅能够掌握Kotlin的基本语法,还能了解到...

    Packt.Kotlin.Programming.Cookbook.2018

    4. 扩展函数与属性:Kotlin允许为已有类添加新的功能,而无需继承或使用装饰者模式。这使得代码更加灵活且易于维护。 二、类型系统 1. 静态类型:Kotlin是一种静态类型的语言,每个值都有一个明确的类型,编译器在...

    kotlin参考文档中文版 下载 官方版

    - **互操作性:**Kotlin与所有的Java框架兼容,这意味着开发者可以在保留已有技术栈的同时享受Kotlin带来的优势。 - **迁移支持:**Kotlin支持从Java到Kotlin的逐步迁移,允许开发者先从新代码开始使用Kotlin,而旧...

    kotlin插件

    5. **重构**:通过插件,开发者可以方便地进行代码重构,如重命名变量、提取函数或移动类到不同的包,所有这些操作都会在相关引用中同步更新。 6. **单元测试支持**:Kotlin插件集成JUnit和其他测试框架,使得编写...

    kotlin官方文档(需要自取)

    - **互操作性**:Kotlin与所有的Java框架完全兼容,这意味着开发者可以在保留已熟悉的Java技术栈的同时,享受到Kotlin带来的现代语言的优势。 - **迁移支持**:Kotlin支持从Java到Kotlin的大规模代码库逐步迁移。...

    kotlin-reference-chinese

    ### Kotlin 官方参考文档中文版概览 #### 关于本书 ...总之,本书是一本全面介绍Kotlin语言的参考资料,适合所有希望深入了解Kotlin的开发者。无论是初学者还是资深开发人员,都可以从中找到有价值的信息。

    kotlin-docs.pdf

    - **互操作性**:Kotlin 与所有基于 Java 的框架完全兼容,这意味着开发人员可以在保持熟悉的技术栈的同时享受更现代语言的好处。 - **迁移**:Kotlin 支持大型代码库从 Java 平滑地迁移到 Kotlin,开发人员可以开始...

    Kotlin常见面试题.pdf

    Kotlin 自动为数据类生成常用的成员函数,如 `equals()`、`hashCode()` 和 `toString()` 等。此外,数据类还默认支持组件函数,方便进行解构声明。例如: ```kotlin data class User(val id: Int, val name: String)...

    kotlin in action

    - **函数定义**:Kotlin中的函数定义使用`fun`关键字,可以省略返回类型,通过类型推断简化语法。 - **变量声明**:Kotlin中有两种类型的变量,`val`表示不可变变量(类似于Java中的final),`var`表示可变变量。 *...

    kotlin for android (中文)

    - **函数**:函数是 Kotlin 的核心组成部分,可以定义为成员函数或者顶级函数。 - **构造函数与参数**:Kotlin 允许定义主构造函数和次构造函数,同时支持默认参数和可变参数列表。 **4.2 变量与属性** - **基本...

    kotlin_v1.0.rar

    与Java不同,Kotlin默认所有成员都是私有的,可以通过getter和setter进行访问控制。此外,Kotlin支持单例对象和接口的实现,提供了一种简洁的面向对象编程方式。 2. 函数与变量:Kotlin使用`fun`关键字定义函数,...

    kotlin语言基础教程.pdf

    - **互操作性**:与所有基于 Java 的框架完全兼容,可以继续使用熟悉的技术栈,同时享受现代化语言的优势。 - **迁移**:支持从 Java 到 Kotlin 的逐步迁移。可以开始用 Kotlin 编写新代码,同时系统中较旧的部分...

    静态类型编程语言Kotlin 语言教程完整版

    - `fun greet()`: 类中的成员函数,用于打招呼。 - `Greeter(args[0]).greet()`: 创建一个 `Greeter` 实例并调用其 `greet` 方法。 ### 开发环境配置 #### IntelliJ IDEA 配置 1. **下载与安装 IntelliJ IDEA ...

    Kotlin语言教程&案例.docx

    - 适用于所有类型的 Kotlin 项目。 2. **Android Studio**: - 专门用于 Android 应用开发。 - 内置对 Kotlin 的支持。 - 提供了强大的编辑器、调试工具和构建工具。 #### 三、Kotlin 基础语法 1. **Hello ...

    kotlin中文文档

    3. **互操作性**:Kotlin与所有基于Java的框架完全兼容,这意味着开发者可以在不改变技术栈的情况下享受到更现代语言的优势。 4. **迁移支持**:Kotlin支持从Java到Kotlin的逐步迁移。开发者可以开始用Kotlin编写新...

    kotlin实战教程之lambda编程

    成员引用提供了另一种方式来引用顶层函数或者类的成员函数。例如,如果有一个Person类,它的say函数可以通过Person::say的方式引用,使其可以用在需要函数类型参数的地方。 综上所述,Kotlin中的Lambda编程不仅极大...

    Kotlin 语言文档

    - **互操作性**:Kotlin 与所有基于 Java 的框架完全兼容,这意味着开发者可以在保留熟悉的技术栈的同时,享受现代语言带来的优势。 - **迁移支持**:Kotlin 支持从 Java 到 Kotlin 的逐步迁移。开发者可以开始使用 ...

Global site tag (gtag.js) - Google Analytics