reified 关键字
作用:
reified 字面意思是具体化,其作用是防止泛形擦除,使得编译后的字节码仍然保留其真实类型
由于 Java 中的泛型存在类型擦除的情况,任何在运行时需要知道泛型确切类型信息的操作都没法用了。
比如你不能检查一个对象是否为泛型类型 T 的实例:
☕️void printIfTypeMatch(Object item) { if (item instanceof T) { // IDE 会提示错误,illegal generic type for instanceof System.out.println(item); } }
这个问题,在 Java 中的解决方案通常是额外传递一个 Class
☕️ void check(Object item, Class type) { if (type.isInstance(item)) { System.out.println(item); } }
Kotlin 中同样可以这么解决,不过还有一个更方便的做法:使用关键字 reified 配合 inline 来解决:
️ inline funprintIfTypeMatch(item: Any) { if (item is T) { // 这里就不会在提示错误了 println(item) } }
Kotlin
这具体是怎么回事呢?等到后续章节讲到 inline 的时候会详细说明,这里就不过多延伸了。



