美文网首页
Kotlin: 一步一步学(六) -- 泛型和委托

Kotlin: 一步一步学(六) -- 泛型和委托

作者: 武动奇迹_2020 | 来源:发表于2021-03-10 21:30 被阅读0次

上一篇:Kotlin: 一步一步学(五) -- 高阶函数

泛型

定义:在一般的编程模式下,我们需要给任何一个变量指定一个具体的类型,而泛型允许我们在不指定具体类型的情况下进行编程,这样编写出来的代码将会拥有更好的扩展性。

泛型有两种定义方式:①泛型类;②泛型方法。定义泛型的方法非常简单,使用的语法都是<T>。

泛型类

现在我们来定义一个泛型类,代码如下所示:

class MyClass<T> {  //在class后面添加<T>
    fun method(param: T): T {
        return param
    }
}

//调用方式
val myClass = MyClass<Int>()
val result = myClass.method(123)  //结果为123

此时的MyClass类就是一个泛型,MyClass中的方法运行使用T类型的参数和返回值。
这里我们将MyClass类的泛型指定成Int类型,于是method()方法就可以接收一个Int类型的参数,并且它的返回值也变成了Int类型。

泛型方法

下面我们来定义一个泛型方法,代码如下所示:

class MyClass{
    fun <T>method(param: T): T {
        return param
    }
}

//调用方式
val myClass = MyClass()
val result = myClass.method<Int>(123)  //结果为123, method后面的泛型定义<Int>可以省略。

你看,现在是在调用method()方法的时候才指定泛型类型了。另外,Kotlin有非常出色的类型推导机制,它能根据你传入的参数,自动推导出泛型的类型。故method后面的泛型指定<Int>可以省略不写。

委托

定义:委托是一种设计模式,操作对象自己不会去处理某段逻辑,而是把工作委托给另外一个辅助对象去处理。

Kotlin对委托功能有很好的支持,并且把委托功能分成了两种:类委托和属性委托。Kotlin中委托使用的关键字是by

类委托

类委托的核心思想在于将一个类的具体实现委托给另外一个类去完成。
示例代码如下所示:

/**
 * 模拟实现一个Set实现类。
 */
class MySet<T>(private val helperSet: HashSet<T>) : Set<T> by helperSet {
    
    fun add() = println("Hello world")

    override fun isEmpty(): Boolean {
        return false
    }
}

属性委托

属性委托的核心思想是将一个属性的具体实现委托给另一个类去完成。

下一篇:[Kotlin: 一步一步学(七) -- 协程

相关文章

  • Kotlin: 一步一步学(七) -- 协程

    上一篇:Kotlin: 一步一步学(六) -- 泛型和委托[https://www.jianshu.com/p/0...

  • Kotlin: 一步一步学(六) -- 泛型和委托

    上一篇:Kotlin: 一步一步学(五) -- 高阶函数[https://www.jianshu.com/p/89...

  • Kotlin:泛型和委托

    前言 本篇文章我们来学一下泛型和委托,Kotlin中的泛型跟java中的泛型有同有异,而委托则是一个新的概念,发车...

  • Kotlin之泛型和委托

    1、泛型 一般情况下我们需要给任何一个变量指定一个具体的类型,而泛型允许我们不指定具体类型,这也使得我们的代码会拥...

  • Kotlin-泛型和委托

    泛型 泛型的使用是为了程序有更好的扩展性。泛型类和泛型方法 泛型的高级特性java的泛型是通过类型擦除机制来实现的...

  • Kotlin---泛型

    Kotlin不变型泛型 Kotlin的不变型泛型和Java一样,通过声明泛型类型来使用泛型类。而该种泛型声明后,则...

  • Kotlin学习 6 -- 泛型和委托

    本篇文章主要介绍以下几个知识点:泛型的基本用法类委托和委托属性自定义 lazy 函数内容参考自第一行代码第3版 1...

  • 举例说明C#中的委托如何使用

    委托回调静态方法和实例方法 泛型委托之Action泛型委托之Func Funcfunc = new Func(Pe...

  • Kotlin 泛型 VS Java 泛型

    建议先阅读我的上一篇文章 -- Java 泛型 和 Java 泛型一样,Kotlin 泛型也是 Kotlin 语言...

  • Kotlin for android学习六:泛型

    前言 kotlin官网和kotlin教程学习教程的笔记。 1. 声明泛型 2. 泛型约束 : 对泛型的类型上限进行...

网友评论

      本文标题:Kotlin: 一步一步学(六) -- 泛型和委托

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