点击领取优惠~
190 字
1 分钟
reified来实现真泛型
在java中我们都知道由于编译时的类型擦除,JVM的泛型其实都是假泛型,如下的代码在编译时往往会报错
fun <T> foo() { println(T::class.java) // 会报错}但是Kotlin为我们提供了reified关键字,通过这个关键字,我们就可以让上面的代码成功编译并且运行,不过还需要搭配inline关键字
inline fun <reified T> fooReal() { println(T::class.java)}由于inline会把函数体替换到调用处,调用处的泛型类型一定是确定的,那么就可以直接把泛型参数进行替换,从而达成了「真泛型」的效果,比如使用上面的fooReal
fooReal<String>()//调用它的打印方法时 替换为String类型println(String::class.java) reified来实现真泛型