Kotlin反射(1)反射API

  反射(Reflection) 是程序的自我分析能力,通过反射可以确定类中有哪些函数以及属性。反射机制在一般的应用开发中很少使用,主要用于框架开发。

  Kotlin 语言本身提供了反射 API,也可以通过调研 Java 语言反射 API 实现反射。通过反射机制能够动态读取一个类的信息;能够在运行时动态加载类,而不是在编译期。反射可以应用于框架开发,它能够从配置文件中读取配置信息动态加载类、调用函数和调用属性等。

Kotlin 反射 API

  Kotlin 反射 API 主要来自于 kotlin.reflectkotlin.reflect.fullkotlin.reflect.jvm 包。其中 kotlin.reflectkotlin.reflect.full 是主要的 Kotlin 反射 API,而 kotlin.reflect.jvm 包主要用于 Kotlin 反射 和 Java 反射的互操作。

  kotlin.reflect 包是 Kotlin 反射核心 API,它的类图如下图 1-1 所示,它们都是接口,详细说明如下:

  • KCkass。表示一个具有反射功能的类。

  • KParameter。表示一个具有反射功能的 可传递给函数或属性的参数。

  • KCallable。表示具有反射功能的可调用实例,包括属性和函数,它的直接子接口有 KProperty 和 KFunction。

  • KFunction。表示一个具有反射功能的函数。

  • KProperty。表示一个具有反射功能的属性,它有很多子接口。KProperty0、KProperty1 和 KProperty2 后面的数字表示接收者作为参数的个数。

  • KMutableProperty。表示一个具有反射功能的使用 var 声明的属性。KMutableProperty0、KMutableProperty1 和 KMutableProperty2 后面的数字含义同 KProperty。

Kotlin反射(1)反射API_第1张图片
示例图1-1

注意:Kotlin 反射 API 所需要的运行时组件来自于独立的 kotlin-reflect.jar 文件,在 Android 等移动平台上为了减少应用程序包的大小,应用程序包再默认情况下不包含 kotlin-reflect.jar 文件。如果要在应用中使用反射功能,则需要额外添加 kotlin-reflect.jar 文件至应用程序包中,并添加 kotlin-reflect.jar 到项目的类路径。

你可能感兴趣的:(Kotlin反射(1)反射API)