kotlin

44.泛型擦除

2019-10-04  本文已影响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)
}

解决泛型擦除方案:

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

猜你喜欢

热点阅读