• kotlin 泛型、委托


    java从1.5引入泛型,kotlin基于java1.6,主要作用

    • 类型检查,编译时检查错误,提供安全保证
    • 自动类型转换

    一、泛型类

    class Box<T>(t : T) {
        var value = t
    }
    
    fun main(args: Array<String>) {
        var boxInt = Box<Int>(10)
        var boxString = Box<String>("Runoob")
        println(boxInt.value)
        println(boxString.value)
    }

    二、泛型方法

    fun main(args: Array<String>) {
        val age = 23
        val name = "runoob"
        val bool = true
        doPrintln(age)    // 整型
        doPrintln(name)   // 字符串
        doPrintln(bool)   // 布尔型
    }
    
    fun <T> doPrintln(content: T) {
        when (content) {
            is Int -> println("整型数字为 $content")
            is String -> println("字符串转换为大写:${content.toUpperCase()}")
            else -> println("T 不是整型,也不是字符串")
        }
    }

    三、泛型约束

    使用泛型约束,对参数类型指定一个允许的类型范围

    常见的是约束上限

    fun <T : Comparable<T>> sort(list: List<T>) {
        // ……
    }

    compara 的子类型可以使用

    sort(listOf(1, 2, 3))

     四、委托

    1、类委托

    类委托核心思想就是把一个类的具体实现委托给另外一个类,使用 by 关键字进行委托

    //定义一个 MySet 类,它里面的具体实现都委托给了 HashSet 这个类,这是是类委托
    class MySet<T>(val helperSet: HashSet<T>) : Set<T>{
    
        override val size: Int get() = helperSet.size
    
        override fun contains(element: T) = helperSet.contains(element)
    
        override fun containsAll(elements: Collection<T>) = helperSet.containsAll(elements)
    
        override fun isEmpty() = helperSet.isEmpty()
    
        override fun iterator() = helperSet.iterator()
    }
    
    /**
     * 如果我们使用 by 关键字,上面的代码将会变得非常整洁,同时我们可以对某个方法进行重写或者新增方法
     * 那么 MySet 就变成了一个全新的数据结构类
     */
    class MySet<T>(val helperSet: HashSet<T>) : Set<T> by helperSet{
         fun helloWord(){
            println("Hello World")
        }
        
        override fun isEmpty() = false
    }

    2、属性委托

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

    参考:(23条消息) “Kotlin“系列: 一、Kotlin入门_sweetying520的博客-CSDN博客

  • 相关阅读:
    javascript 事件冒泡
    Java 理论与实践: 正确使用 Volatile 变量
    Concurrency,Java 并发
    POJ2379 ACM Rank Table 模拟题
    HDU1711Number Sequence KMP
    POJ1061 青蛙的约会 扩展GCD
    HDU2523 SORT AGAIN HASH
    HDU2087剪花布条 KMP
    HDU3736 Cyclic Nacklace KMP
    HDU1709The Balance 母函数
  • 原文地址:https://www.cnblogs.com/suiyilaile/p/16540803.html
Copyright © 2020-2023  润新知