继续对反射进行实战。

获取构造方法:

先定义一个主构造方法,2个次构造方法,接下来咱们用反射来获取一下构造方法:

其结果:

[fun <init>(kotlin.Int, kotlin.String): com.kotlin.test13.MyTestClass4, fun <init>(kotlin.Int, kotlin.Boolean): com.kotlin.test13.MyTestClass4, fun <init>(kotlin.Int): com.kotlin.test13.MyTestClass4]

Process finished with exit code 0

其中有个细节需要注意:

居然在Kotlin中构造函数跟正常的函数都是KFunction,而在Java中构造函数是Constructor,而方法是Method,需要注意。

调用方法:

上面都已经能通过Kotlin反射来获取各种元素了,接下来咱们来调用一下,实际用的话调用的场景也是最多的,下面来看一下:

好,关健的就是如何来调用了,首先得获取要调用的方法,这里跟Java是不太一样的,如下:

好,接下来调用一下:

为啥,看一下错误提示:

那咱们可以这样处理:

如果我们将方法名称故意改成一个不存在的,此时也不会抛空指针,非常安全:

当然还可以如另一种处理方式,就是强制让它可以为空的调用,如下:

此时如果没找到方法,则就会抛空指针了,这是强烈不推荐这样用的:

好,接下来再来调带参数的方法:

瞅一下该call的定义:

操作属性:

此外还有另一种方式来调用属性,如下:

上面只是读取了属性,下面再看个例子,对其进行值的修改,看如何做?

这里就得先了解对于属性在Kotlin的表示了,我们知道是KProperty:

而对于可变的属性则是它:

其中有一个setter,所以设置值可以这么搞:

Kotlin反射实践操作详解的更多相关文章

  1. java反射机制深入详解

    java反射机制深入详解  转自:http://www.cnblogs.com/hxsyl/archive/2013/03/23/2977593.html 一.概念 反射就是把Java的各种成分映射成 ...

  2. MySQL 操作详解

    MySQL 操作详解 一.实验简介 本节实验中学习并实践 MySQL 上创建数据库.创建表.查找信息等详细的语法及参数使用方法. 二.创建并使用数据库 1. 创建并选择数据库 使用SHOW语句找出服务 ...

  3. Java基础13:反射与注解详解

    Java基础13:反射与注解详解 什么是反射? 反射(Reflection)是Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性. Orac ...

  4. MongoDB各种查询操作详解

    这篇文章主要介绍了MongoDB各种查询操作详解,包括比较查询.关联查询.数组查询等,需要的朋友可以参考下   一.find操作 MongoDB中使用find来进行查询,通过指定find的第一个参数可 ...

  5. Linux Shell数组常用操作详解

    Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...

  6. [Android新手区] SQLite 操作详解--SQL语法

    该文章完全摘自转自:北大青鸟[Android新手区] SQLite 操作详解--SQL语法  :http://home.bdqn.cn/thread-49363-1-1.html SQLite库可以解 ...

  7. shell字符串操作详解

    shell字符串操作详解的相关资料. 1.shell变量声明的判断  表达式 含义 ${var} 变量var的值, 与$var相同 ${var-DEFAULT} 如果var没有被声明, 那么就以$DE ...

  8. memcached 命令操作详解

    memcached 命令操作详解 一.存储命令 存储命令的格式: <command name> <key> <flags> <exptime> < ...

  9. windows phone 8.1开发SQlite数据库操作详解

    原文出自:http://www.bcmeng.com/windows-phone-sqlite1/ 本文小梦将和大家分享WP8.1中SQlite数据库的基本操作:(最后有整个示例的源码)(希望能通过本 ...

随机推荐

  1. linux安装jira

    JIRA配置本地MYSQL数据库 https://blog.csdn.net/coin_one/article/details/78376238 jira7.3.6 linux安装及破解 https: ...

  2. GIT实践:同步远程分支

    GIT实践:同步远程分支 克隆远程仓库对应分支 克隆时指定分支,语法为:git clone -b 分支名 远程地址. 同步远程分支 更新远程分支 当Git仓库地址发生变化后,首先更新远程地址 git ...

  3. scala 样例类

    一.case class 的特征 package com.jason.qianfeng case class Message(sender: String, receiver: String, bod ...

  4. Ubuntu下局域网快速分享文件

    本地主机名:zhang 本地环境:Ubuntu 18.04.3 工作中经常需要在多个机器上互传文件,本文分享一种便捷的方法,仅供应急使用. 利用了mdns和python3内置的httpServer.( ...

  5. 基础自动化部署搭建过程【Jenkins】

    测试环境搭建 为了快速搭建一套PHP测试环境我决定用laradock了,虽然文件很多,但是里面封装的东西也是比较全的,后期开发不知道会用到什么技术,就决定先用这个,随时可以启动用得到的服务.larad ...

  6. 【windows】win10局域网共享文件夹

    1.打开 2.共享文件夹 另一台局域网电脑可根据共享的电脑ip访问就可以了[格式:\\ip] 如果右键文件夹没有共享选项

  7. python代码git上传

    python代码git上传 1.每次上传代码之前需要先拉取线上的代码 操作如下:

  8. expect——通过编写自动化脚本实现信息交互(整理)

    本文简要介绍了expect工具语言的功能.用法,并以实例来具体说明 expect是什么 Expect是一个免费的编程工具语言,用来完成通信过程中的交互式任务,而无需人的干预. 通过shell虽然可以实 ...

  9. elasticsearch安全重启节点

    elasticsearch集群,有时候可能需要修改配置,增加硬盘,扩展内存等操作,需要对节点进行维护升级.但是业务不能停,如果直接kill掉节点,可能导致数据丢失.而且集群会认为该节点挂掉了,就开始转 ...

  10. maven安装配置 每次都百度,麻烦

    JDK已经安装 1. 下载:https://maven.apache.org/download.cgi 2.  解压 D:\Program Files\maven 配置环境变量 新建环境变量MAVEN ...