- kotlin值得系列1:内置类型。基本类型,数组,Range区间,集合框架,函数,Lambda
- kotlin值得系列2,关于类你所应该知道的一切
- kotlin值得系列3、函数加强之 高阶函数、内联函数、集合变换与序列、SAM转换、常用的高阶函数
- kotlin值得系列4、变量,常量,表达式,运算符
- kotlin值得系列5、关于kotlin泛型,也许值得看的文章
- kotlin值得系列6、kotlin的反射,走一个?
- kotlin值得系列7、也是该看看注解annotation了
本文是kotlin值得系列第5篇
反射(Reflection)是一组语言和库特性,用于在运行时检查程序的结构
先从Java的反射说起
首先,JVM加载Java文件的过程是怎么样的?
- 编译阶段,.java文件会被编译成.class文件,.class文件是一种二进制文件
- JVM中的类加载器会读取字节码文件,取出二进制数据,加载到内存中,并且解析.class文件的信息。
- 类加载器会获取类的二进制字节流,在内存中生成代表这个类的java.lang.Class对象。
- 最后会开始类的生命周期,比如连接、初始化等等。
而Java的反射,就是去操作这个 java.lang.Class对象
Kotlin的反射,可以说在在Java的基础上,提供了更加丰富的API。
提示:
在Java平台(JVM)上使用kotlin反射功能,需要在项目中添加kotlin反射库的jar包(kotlin-reflect.jar)!
因为kotlin反射库JAR文件(kotlin-reflect.jar)是单独分发的,不包含在kotlin标准库中,
这是为了减少[不使用反射功能的应用]所需运行库的大小!
kotlin常用的数据结构
4种:泛型类型或参数、类、属性、方法/函数
KType
:描述未擦除的类型或泛型参数等,例如Map<String,Int>;KClass
:可通过typeOf或者以下类型获取对应的父类、属性、函数参数等描述对象的实际类型,不包含泛型参数,例如Map。可通过对象、类型名直接获得KProperty
:描述属性,可通过属性引用、属性所在类的KClass获取KFunction
:描述函数,可通过函数引用、函数所在类的KClass获取
关于具体使用,可以参考这个歌文章:
blog.csdn.net/qq_31339141… 写的还是不错的。
参考: