美文网首页工作生活
Kotlin反射(1)反射API

Kotlin反射(1)反射API

作者: 狼性代码人 | 来源:发表于2019-07-05 08:38 被阅读0次

  反射(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。

示例图1-1

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

相关文章

  • Kotlin反射(1)反射API

      反射(Reflection) 是程序的自我分析能力,通过反射可以确定类中有哪些函数以及属性。反射机制在一般的应...

  • Kotlin和Java互相调用(二)

    Kotlin反射 正如在前面不少代码中所见到的, Kotlin也提供了反射 API,这些反射 API可以方便程序在...

  • Kotlin学习笔记(六)-反射

    [toc] 前言 这一节为Kotlin反射,主要是在Kotlin中时用Java-Api来实现反射,使用Kotlin...

  • Kotlin知识归纳(十四) —— 反射

    前序 当在Kotlin中使用反射时,你会和两种不同的反射API打交道。 标准的Java反射,定义在包 java.l...

  • Kotlin使用注解

    Kotlin的反射也提供了一些支持注解的API。 一、提取注解信息 Kotlin使用kotlin.Annotion...

  • java反射初识

    反射 反射的优缺点 优点 缺点 反射主要的api

  • 《Oracle Java SE编程指南》26-01:反射的概念

    内容导航: 前言 1、Java反射的概念 2、Java反射的作用 3、Java反射相关API 前言 我们回忆一下在...

  • 反射

    了解完类加载机制之后,再来了解一下反射。 1.什么是反射 我们也许都知道怎么使用反射的api,那到底什么是反射。我...

  • Kotlin 反射

    反射是语言与库中的一组功能, 可以在运行时刻获取程序本身的信息。 类引用 要得到一个静态的已知的 Kotlin 类...

  • Kotlin反射

    Kotlin把函数和属性当成“一等公民”,并可通过反射直接获取函数、属性的引用。 一、类引用 Kotlin的类引用...

网友评论

    本文标题:Kotlin反射(1)反射API

    本文链接:https://www.haomeiwen.com/subject/ybrchctx.html