Kotlin反射实践操作详解
继续对反射进行实战。
获取构造方法:
先定义一个主构造方法,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反射实践操作详解的更多相关文章
- java反射机制深入详解
java反射机制深入详解 转自:http://www.cnblogs.com/hxsyl/archive/2013/03/23/2977593.html 一.概念 反射就是把Java的各种成分映射成 ...
- MySQL 操作详解
MySQL 操作详解 一.实验简介 本节实验中学习并实践 MySQL 上创建数据库.创建表.查找信息等详细的语法及参数使用方法. 二.创建并使用数据库 1. 创建并选择数据库 使用SHOW语句找出服务 ...
- Java基础13:反射与注解详解
Java基础13:反射与注解详解 什么是反射? 反射(Reflection)是Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性. Orac ...
- MongoDB各种查询操作详解
这篇文章主要介绍了MongoDB各种查询操作详解,包括比较查询.关联查询.数组查询等,需要的朋友可以参考下 一.find操作 MongoDB中使用find来进行查询,通过指定find的第一个参数可 ...
- Linux Shell数组常用操作详解
Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...
- [Android新手区] SQLite 操作详解--SQL语法
该文章完全摘自转自:北大青鸟[Android新手区] SQLite 操作详解--SQL语法 :http://home.bdqn.cn/thread-49363-1-1.html SQLite库可以解 ...
- shell字符串操作详解
shell字符串操作详解的相关资料. 1.shell变量声明的判断 表达式 含义 ${var} 变量var的值, 与$var相同 ${var-DEFAULT} 如果var没有被声明, 那么就以$DE ...
- memcached 命令操作详解
memcached 命令操作详解 一.存储命令 存储命令的格式: <command name> <key> <flags> <exptime> < ...
- windows phone 8.1开发SQlite数据库操作详解
原文出自:http://www.bcmeng.com/windows-phone-sqlite1/ 本文小梦将和大家分享WP8.1中SQlite数据库的基本操作:(最后有整个示例的源码)(希望能通过本 ...
随机推荐
- Postgres-XL集群ERROR :Failed to get pooled connections原因说明
集群说明 6台服务器.其中1台(rt67-1)运行GTM,其余5台均运行1个GTM_PROXY.1个Coordinator node.3个Data node.每个服务器连接到3组网络中,每个Data ...
- 自动化办公:xlsxwriter操作Excel
转载原链接:https://www.jianshu.com/p/d685cfaaeef7 1.安装 pip install xlsxwriter 2.操作一个简单的Excel文档 # 引入依赖模块 i ...
- 【LOJ502】[LibreOJ β Round] ZQC 的截图 (随机化)
真的是神仙题目啊-- 题目 LOJ502 官方题解 我认为官方题解比我讲得好. 分析 这是一道蒙特卡洛算法的好题 上面那个奇奇怪怪的词是从官方题解里看到的,意思大概就是随机化算法 -- ? 一句话题意 ...
- ConcurrentHashMap多线程下比HashTable效率更高
HashTable使用一把锁处理并发问题,当有多个线程访问时,需要多个线程竞争一把锁,导致阻塞 ConcurrentHashMap则使用分段,相当于把一个HashMap分成多个,然后每个部分分配一把锁 ...
- IDEA+docker实践
1.下载 https://www.jetbrains.com/ 2.下载jdk 目前在官网下载jdk的时候需要登陆,这边分享一个账号,方便下载 2696671285@qq.com 密码:Oracle1 ...
- 解决非controller使用@Autowired注解注入为null问题
在SpringMVC框架中,我们经常要使用@Autowired注解注入Service或者Mapper接口,我们也知道,在controller层中注入service接口,在service层中注入其它的s ...
- Feign调用时读取超时(Read timed out executing GET)解决
解决方式(很多人比较关注,所以放在最前面): 因为Feign调用默认的超时时间为一分钟,一分钟接口不能返回就会抛出异常,所以在服务端的yml文件中增加如下配置即可解决: # feign调用超时时间配置 ...
- 洛谷P5022 旅行 题解
前面几个代码都是部分分代码,最后一个才是AC了的,所以最后一个有详细注释 安利一发自己的Blog 这是提高组真题,233有点欧拉回路的感觉. 题目大意: 一个 连通 图,双向边 ,无重边 , 访问图中 ...
- Window中C++进行精确计时的方法
嗯,程序员一个永恒的追求就是性能吧? 为了衡量性能,自然需要计时. 奈何无论C标准库还是C++标准库,因为通用性的考虑,其time API精度都不高.基本都是毫秒级的. 所以如果要真正精确地衡量程序的 ...
- windows 10 如何设定计划任务自动执行 python 脚本?
我用 python 写了一些脚本,有一些是爬虫脚本,比如爬取知乎特定话题的热门问题,有一些是定期的统计分析脚本,输出统计结果到文档中.之前我都是手动执行这些脚本,现在我希望如何这些脚本能自动定时执行. ...