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

refield

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

refield

reified 关键字

作用:

reified 字面意思是具体化,其作用是防止泛形擦除,使得编译后的字节码仍然保留其真实类型

由于 Java 中的泛型存在类型擦除的情况,任何在运行时需要知道泛型确切类型信息的操作都没法用了。

比如你不能检查一个对象是否为泛型类型 T 的实例:

☕️
 void printIfTypeMatch(Object item) {
    if (item instanceof T) { //  IDE 会提示错误,illegal generic type for instanceof
        System.out.println(item);
    }
}

这个问题,在 Java 中的解决方案通常是额外传递一个 Class 类型的参数,然后通过 Class#isInstance 方法来检查:

☕️                             
 void check(Object item, Class type) {
    if (type.isInstance(item)) {
               
        System.out.println(item);
    }
}

Kotlin 中同样可以这么解决,不过还有一个更方便的做法:使用关键字 reified 配合 inline 来解决:

️          
inline fun  printIfTypeMatch(item: Any) {
    if (item is T) { //  这里就不会在提示错误了
        println(item)
    }
}

Kotlin

这具体是怎么回事呢?等到后续章节讲到 inline 的时候会详细说明,这里就不过多延伸了。

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

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

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