美文网首页kotlin
44.泛型擦除

44.泛型擦除

作者: 写代码的向日葵 | 来源:发表于2019-10-04 19:32 被阅读0次

    1.代码如下:

    package com.kotlin.zq.abcd
    
    fun main(args: Array<String>) {
        val box1 = Box("张三")
        val box2 = Box(10)
    
        //class类型
        val clz1 = box1.javaClass.name
        val clz2 = box2.javaClass.name
    
        println(clz1)
        println(clz2)
    }
    
    class Box<T>(val thing: T)
    

    2.输出结果如下

    image.png

    3. java获取泛型需要反射,相对来说,比较麻烦,kotlin提供了一种简单的方式,如下

    fun main(args: Array<String>) {
        parseType("李四")
        parseType(100)
    }
    
    inline fun <reified T> parseType(thing: T) {
        val name = T::class.java.name
        println(name)
    }
    
    • 输出结果如下


      image.png

    解决泛型擦除方案:

    • 第一步:泛型前加reified 关键字
    • 第二步: 方法前加上inline关键字

    相关文章

      网友评论

        本文标题:44.泛型擦除

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