当前位置:网站首页>Kotlin反射
Kotlin反射
2022-08-08 20:26:00 【不忘初衷z】
KOtlin-reflect 核心 API
主要常用接口:
KClass
提供了很多函数可以获得运行时对象对相关信息。
KClass的一个实例表示对类对引用,在程序代码中引用类使用::运算符
用法:
方式1
var clz1 = Int::class
方式2
var user = User::class
方法:
simpleName 获取类名
qualifiedName 类全名
isAbstract 是否抽象类
isData 是否数据类
constructors 获取所有构造函数
primaryConstructor 获取主构造函数
方法很多!
调用函数
通过反射调用函数需要KFunction实例,通过两种方式获取
一种是函数引用;另外一种是通过KClass提供对API获取
具体代码,首先创建一个类
class user{
var name
var age
fun setNameAndAge(name:String,age:Int){
this,name = name
this.age = age
}
fun add(a:Int,b:int) = a + b
fun sub(a:Int,b:int) = a - b
fun calculate(opr:Char):(Int,Int) - > Int = if (opr == “+”)::add else ::sub
}
fun main(){
var fn1 = ::add
var fn2 = ::sub 创建两个引用
val fun = calculate(“+”)
fn1(10,5) //15
fn2(10,5) // 5
fn3(10,5) //15
val clz = user::class 申明类的引用
val user = clz.createInstance() 获取反射性实例化对象
clz.functions.forEach { println(it.name)} 调用函数集合,打印当前类的方法集合
val user1 = clz.functions.first 获取类中的第一个函数
user1.call(user,“张三”,15) 调用第一个函数方法,传值需要调用call方法并且要把反射实例化对象传入第一个参数中
}
调用属性
KProperty 通过两种方式获取,一种属性引用,一种是通过KClass提供的API获取
memberProperties 获取所有属性成员
边栏推荐
猜你喜欢
随机推荐
方舟建筑代码指令大全
2022-08-08 第六小组 瞒春 学习笔记
JVM调优-JVM调优实践一
Intel两大FPGA产品部署中国:性能升45%、功耗降40%
监控工具普罗米修斯(Prometheus)的介绍与安装
【无标题】
DCT变换
书法家唐效奇
JSD-2204-Session-Token-JWT-Day12
实践篇2:深度学习之----LetNet之tensorflow2的实现
PHP使用glob()查找文件
CVPR 2022 ActivityNet竞赛冠军:中科院深圳先进院提出高低分双模态行为识别框架
性能问题从发现到优化一般思路
编写CMakeLists生成静态库及可执行文件的make文件
Maykel Studio OpenHarmony Device Development Training Notes - Chapter 6 Study Notes
Ansible自动化运维工具(一)安装及模块
什么是仿射函数?
信号与系统【x(t)*h(t)=y(t) 求h(t)】附matlab代码
方舟基础物品指令代码大全
学习笔记:第二部分 队列