栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Kotlin中reified关键字对于泛型使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Kotlin中reified关键字对于泛型使用

data class ObjectClass1(val name: String, val age: Int, val study: String)
data class ObjectClass2(val name: String, val age: Int, val study: String)
data class ObjectClass3(val name: String, val age: Int, val study: String)

class KTDemo15 {
    //功能:默认输出一个随机对象,如果此对象和用户指定的对象不一致
    //就返回默认对象否则直接返回此对象
    inline fun  randomOrDefault(defaultLambdaAction: () -> T): T? {
        val objList: List = listOf(
            ObjectClass1("obj1 张三", 22, "学习C"),
            ObjectClass2("obj2 李四", 22, "学习C++"),
            ObjectClass3("obj3 王五", 22, "学习C#")
        )
        val randomObj: Any? = objList.shuffled().first()
        println("随机产生的对象是:$randomObj")  //随机产生的对象是:ObjectClass2(name=obj2 李四, age=22, study=学习C++)
        //如果 it 随机产生的对象 等于 T类型 就会执行 as T?
        return randomObj.takeIf { it is T } as T? // null as T?   是可以的
        //如果 it 随机产生的对象 不等于 T类型,就会执行下面的
            ?: defaultLambdaAction()
    }
}

fun main(args: Array) {
    val finalResult = KTDemo15().randomOrDefault {
        println("由于随机产生的对象和我们制定的ObjectClass1不一致,所以返回默认对象")
        ObjectClass1("备用 obj  王五", 33, "学习Kotlin")
    }
    println("调用处的最终结果是:$finalResult")//调用处的最终结果是:ObjectClass1(name=备用 obj  王五, age=33, study=学习Kotlin)

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/732042.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号