kotlin获取泛型集合的类型信息

这篇具有很好参考价值的文章主要介绍了kotlin获取泛型集合的类型信息。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

通过 reified 关键字和内联函数来实现

inline fun <reified T> getClassFromList(list: List<T>): Class<T> {
    return T::class.java
}

fun main() {
    val list = listOf("Hello", "World")
    val clazz = getClassFromList(list)
    println(clazz) // 输出 class kotlin.String
}

注:将reified 和 inline去掉就无法通过T::class.java获取到类型,因为编译的时候会进行类型擦除,所以在运行的时候已经无法获取到类型了,这是Java兼容性的处理机制,kotlin通过reified和inline优化了泛型,实现了运行时获取类型 。

Java 5才引入泛型,为了兼容性的考虑,采用类型擦除的机制来支持泛型。

泛型信息只存在于代码编译阶段,在进入 JVM 之前,与泛型相关的信息会被擦除掉,这个过程被称为类型擦除。文章来源地址https://www.toymoban.com/news/detail-620443.html

到了这里,关于kotlin获取泛型集合的类型信息的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • lua脚本获取table类型-Java使用lua脚本操作redis获取zset元素的集合

    lua脚本获取table类型-Java使用lua脚本操作redis获取zset元素的集合 7.0点赞功能-定时持久化到数据库-lua脚本的编写_哔哩哔哩_bilibili https://www.bilibili.com/video/BV1bu411j75u 这个脚本主要是放到Springboot工程里的, 这里如果是向放到字段控制台执行,那就要加入 eval 以及其他参数:

    2024年02月13日
    浏览(46)
  • .Net 根据类型全名字符串获取类型信息

    asp.net项目开发过程中用到了多个程序集(dll), 如何根据类型全名(fullname)获取类型信息? 如果项目(csproj)中设置了引用对应的dll 或nupkg包,但是代码中没有任务地方引用改该程序集的类,则实际上运行时,该程序集不会被加载到进程中. 假设有一个 ThirdModels.dll, 在该d

    2024年02月16日
    浏览(38)
  • Kotlin基础(八):泛型

    本文主要讲解kotlin泛型,主要包括泛型基础,类型变异,类型投射,星号投射,泛型函数,泛型约束,泛型在Android中的使用。 Kotlin文章列表 Kotlin文章列表: 点击此处跳转查看 在 Kotlin 中,泛型是一种类型参数化的机制,它允许我们编写具有通用性的代码。使用泛型,我们可

    2024年02月15日
    浏览(34)
  • 【Kotlin精简】第7章 泛型

    泛型 即 “ 参数化类型 ”,将类型参数化,可以用在 类 , 接口 , 函数 上。与 Java 一样, Kotlin 也提供 泛型 ,为 类型安全 提供保证, 消除类型强转 的烦恼。 类型安全 :通用允许仅保留单一类型的对象。泛型不允许存储其他对象。 不需要类型转换 :不需要对对象进行类

    2024年02月05日
    浏览(37)
  • Kotlin(十七) 泛型和委托

    泛型的基本用法 泛型主要有两种定义方式:一种是定义泛型类,另一种是定义泛型方法,使用的语法结构都是 T 。当然括号内的 T 并不是固定要求的,事实上你使用任何英文字母或单词都可以,但是通常情况下, T 是一种约定俗成的泛型写法。 定义一个泛型类,示例如下:

    2024年02月04日
    浏览(39)
  • Kotlin笔记(五):泛型基础,委托

     Java自1.5版本引入了泛型的概念, Kotlin自然也支持泛型,Kotlin的泛型跟Java的泛型有相同之处,也有一些特别之处.  在一般的编程模式下,我们需要给任何一个变量指定一个具体的类型,而泛型允许我们在不指定具体类型的情况下进行编程,这样编写出来的代码将会拥有更好的

    2024年02月07日
    浏览(38)
  • Kotlin中的泛型理解与应用

    泛型是一种在编程中用于增加代码的灵活性和重用性的概念。它允许我们编写可以在多种类型上工作的通用代码,而不需要为每种类型都编写不同的代码。 在Kotlin中,泛型可以应用于类、函数和接口等。下面是一些关于泛型在Kotlin中的理解和示例。 1、泛型类 泛型类是指可以

    2024年02月07日
    浏览(36)
  • 第五单元 泛型集合

      1、存取数据需要进行装箱拆箱 2、数据类型转换存在隐患   非泛型集合性能   输出结果:非泛型集合耗时(ms):258   泛型集合性能   输出结果:泛型集合耗时(ms):25   使用场景: 在Linq 中比较常见 存储数据   1、T只是占位符,会被传递的数据类型替换。 2、实例化List时传

    2024年02月05日
    浏览(46)
  • java基础-集合+泛型+枚举

    说明: 集合框架是一个类库的集合,里面还有很多接口。 里面虚框都是接口 。 全部在java.util HashSet是基于HashMap实现的。 TreeSet是一个有序Set。 ArrayList能快速随机访问,可变大小。 LinkedList随机访问相对慢,但是可以当作stack或者queue来用。 下面是List接口常用的方法: 使用的

    2024年02月20日
    浏览(36)
  • kotlin学习(二)泛型、函数、lambda、扩展、运算符重载

    Kotlin 中的类可以有类型参数,与 Java 类似: 创建这样类的实例只需要提供类型参数即可: 如果类型参数可以推断出来,例如从构造函数的参数或者从其他途径,就可以省略类型参数: String作为Object的子类,就可以直接将子类对象赋值给父类,这个操作即达到了 型变 。 但是

    2024年02月09日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包