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

Kotlin学习日记-简单了解反射

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

Kotlin学习日记-简单了解反射

1.反射的概念
  • 反射是允许程序在运行时访问程序结构的一类特征
    • 类
    • 接口
    • 方法
    • 属性等语法属性
2.反射的常见用途
  • 访问程序自身的数据,列出所有声明的属性、方法、内部类等
  • 通过class对象再通过指定名称能访问对应的函数与属性
  • 通过签名信息获取泛型实参的具体类型
3.反射常用的数据结构
数据结构概念及使用说明
KType描述未擦除的类型或泛型参数等,例如Map,可通过typeOf或者以下类型获取对应的父类、属性、函数等
KClass描述对象的实际类型,不包含泛型参数,例如Map,可通过对象,类型名直接获得
KProperty描述属性,可通过属性引用、属性所在类的KClass获取
KFunction描述函数,可通过函数引用、函数所在类的KClass获取
4.反射数据结构:Kotlin vs Java

KType -> Type
KClass -> Class
KProperty -> Field
KFunction -> Method

5.Kotlin中使用反射
  • Java 反射
    • 优点:无需引入额外依赖,首次使用速度相对较快
    • 缺点:无法访问Kotlin语法特性,需对Kotlin生成的字节码足够了解
  • Kotlin 反射
    • 优点:支持访问Kotlin几乎所有特性,Api设计更加友好
    • 缺点:需引入Kotlin反射库(2.5MB,编译后400KB),首次调用时较慢
6.获取类引用

最基础的反射功能是获取Kotlin类运行时引用,要获取对静态已知Kotlin类的引用,可以使用以下语法:

val TCalzz = T::class

如果要使用Java类的引用,请使用MyClass::class.java

7.获取类成员 7.1 获取属性
范围方法
全部成员属性T::class.memberProperties
公共成员属性T::class.declaredMemberProperties
全部扩展函数T::class.memberExtensionProperties
公共扩展函数T::class.declaredMemberExtensionProperties
7.2 获取函数
范围方法
全部成员函数T::class.memberFunctions
公共成员属性T::class.declaredMemberFunctions
全部扩展函数T::class.memberExtensionFunctions
公共扩展函数T::class.declaredMemberExtensionFunctions
7.3 获取内部类
T::class.nestedClasses
7.4 获取伴生类
T::class.companionObject
7.5 获取构造器
//获取主构造器
T::class.primaryConstructor

//获取副构造器
T::class.constructors
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/992975.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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