Kotlin(十七) 泛型和委托

这篇具有很好参考价值的文章主要介绍了Kotlin(十七) 泛型和委托。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

泛型的基本用法

泛型主要有两种定义方式:一种是定义泛型类,另一种是定义泛型方法,使用的语法结构都是<T>。当然括号内的T并不是固定要求的,事实上你使用任何英文字母或单词都可以,但是通常情况下,T是一种约定俗成的泛型写法。

定义一个泛型类,示例如下:

class TestClass<T> {

    fun test(param: T): T {
        return param
    }
    
}

调用:

val testClass1 = TestClass<Int>()
val test1=testClass1.test(111)

val testClass2 = TestClass<String>()
val test2=testClass2.test("test")    

定义一个泛型方法,示例如下:

class TestClass {

    fun <T> test(param: T): T {
        return param
    }

}

调用:

val testClass1 = TestClass()
val test1=testClass1.test(111)

val testClass2 = TestClass()
val test2=testClass2.test("test")

类委托和委托属性

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

类委托示例:

class MySet<T>(val helperSet: HashSet<T>) : Set<T> by helperSet{

    
}

我们使用 by 关键字 使 MySet成为了一个全新的数据结构类,我们也不用实现原有的方法,因为我们已经把工作委托给了HashSet。如果我们想新增或者重写里面的方法,直接在类里面新增或者重写就好了。这样我们的类委托就已经完成。

委托属性

委托属性,具有特定的语法结构,示例如下:

class MyClass {

    var p by ClassName()

}
class ClassName{

    var propValue: Any? = null

    operator fun getValue(myClass: MyClass, prop: KProperty<*>): Any? {
        return propValue
    }

    operator fun setValue(myClass: MyClass, prop: KProperty<*>, value: Any?) {
        propValue = value
    }

}

这是一种标准的代码实现模板,在ClassName类中我们必须实现getValue()setValue()这两个方法,并且都要使用operator关键字进行声明。这样我们就完成了委托属性文章来源地址https://www.toymoban.com/news/detail-759855.html

到了这里,关于Kotlin(十七) 泛型和委托的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kotlin 委托

    委托模式 是一种 通过 对象组合 实现代码重用 的设计模式, 对象处理请求时 将其 委托给 其他对象(委托)处理。 Kotlin 委托 分为: 类的委托 属性的委托 委托 Delegate 是实现继承的一种替代方式。达到了 多继承、代码复用 目的。 我们知道Java本身不支持多继承的,而是通

    2024年02月02日
    浏览(44)
  • Kotlin中的委托

    在Kotlin中,委托是一种强大的设计模式,它允许一个类将其一些职责委托给另一个类。这种机制通过by来实现。委托有助于代码的重用,降低耦合性,并提供更清晰的类设计。在Kotlin中,有两种主要类型的委托:类委托和属性委托。 类委托允许一个类将部分或全部实现

    2024年01月15日
    浏览(52)
  • Kotlin委托

    委托 委托 == 代理 方法内的成员永远拿不到thisRef:官方委托和自定义委托-》方法里面没办法使用反射 委托只能类委托和属性委托 本文链接:https://blog.csdn.net/feather_wch/article/details/132095759 1、类委托 委托的是接口的方法 2、类委托的原理是什么?生成了什么代码? 成员变量:

    2024年02月13日
    浏览(50)
  • Kotlin基础(九):对象和委托

    本文主要讲解kotlin对象和委托。 Kotlin文章列表 Kotlin文章列表: 点击此处跳转查看 在Kotlin中,对象(Object)是一个具有特殊用途的单例实例。它是一种创建单个实例的方式,确保在整个应用程序中只存在一个特定对象。 对象在Kotlin中有以下特点和用途: 单例实例:对象只能有

    2024年02月14日
    浏览(38)
  • Kotlin委托Delegate托管by

    property=\\\'user\\\' setValue - fly property=\\\'user\\\' getValue fly 0 - 2023 2023 - 2024 Delegates.observable追踪观察可变数据更新,Kotlin_zhangphil的博客-CSDN博客 **Java观察者模式的场景:一个女孩洗澡,被很多男孩偷看。女孩洞察后,搜索坏男孩,然后继续洗澡。*//*男孩Boy.java*/import java.util.Observable;不定长

    2024年02月09日
    浏览(38)
  • Android(Kotlin) 委托(by) 封装 SharedPreferences

    在 Kotlin 中,委托是一种通过将自身的某个功能交给另一个对象来实现代码重用的技术。通过委托,我们可以将某个属性或方法的实现委托给另一个对象,从而减少重复代码的编写。委托可以用于实现多重继承、代码复用和扩展现有类的功能。 Kotlin 中的委托通过 “b

    2024年04月09日
    浏览(35)
  • rust学习-泛型和trait

    Option,Vec,HashMapK, V,ResultT, E等,取函数以减少代码重复的机制 两个函数,不同点只是名称和签名类型 重写如下 为所有类型的结构体提供方法 只为f32提供方法 方法使用了与结构体定义中不同类型的泛型 Rust 实现了泛型,使得使用泛型类型参数的代码相比使用具体类型并没

    2024年02月17日
    浏览(43)
  • Kotlin基础(八):泛型

    本文主要讲解kotlin泛型,主要包括泛型基础,类型变异,类型投射,星号投射,泛型函数,泛型约束,泛型在Android中的使用。 Kotlin文章列表 Kotlin文章列表: 点击此处跳转查看 在 Kotlin 中,泛型是一种类型参数化的机制,它允许我们编写具有通用性的代码。使用泛型,我们可

    2024年02月15日
    浏览(35)
  • 【Kotlin精简】第7章 泛型

    泛型 即 “ 参数化类型 ”,将类型参数化,可以用在 类 , 接口 , 函数 上。与 Java 一样, Kotlin 也提供 泛型 ,为 类型安全 提供保证, 消除类型强转 的烦恼。 类型安全 :通用允许仅保留单一类型的对象。泛型不允许存储其他对象。 不需要类型转换 :不需要对对象进行类

    2024年02月05日
    浏览(38)
  • Kotlin中的泛型理解与应用

    泛型是一种在编程中用于增加代码的灵活性和重用性的概念。它允许我们编写可以在多种类型上工作的通用代码,而不需要为每种类型都编写不同的代码。 在Kotlin中,泛型可以应用于类、函数和接口等。下面是一些关于泛型在Kotlin中的理解和示例。 1、泛型类 泛型类是指可以

    2024年02月07日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包