Kotlin 基础教程之反射

概述
反射是语言与库中的一组功能, 可以在运行时刻获取程序本身的信息.在Kotlin中,不仅可以通过发射获取类的信息,同时可以获取函数和属性的信息。也就是说,在在运行时刻得到一个函数或属性的名称和数据类型) 可以通过简单的函数式, 或交互式的编程方式实现.
在Java平台上, 使用反射功能所需要的运行时组件是作为一个单独的JAR文件发布的( kotlinreflect.jar). 这是为了对那些不使用反射功能的应用程序, 减少其运行库的大小. 如果你需要使用反射, 请注意将这个.jar文件添加到你的项目的classpath中.
类引用
最基本的反射功能就是获取一个 Kotlin 类的运行时引用. 要得到一个静态的已知的 Kotlin 类的引用, 可以使用类字面值(class literal) 语法:
val c = MyClass::class
类引用是一个 KClass 类型的值.
在Kotlin中定义了系列的常量,来表示类的信息.
函数引用
使用 :: 操作符来实现函数的引用。在高级函数中,我们通常使用函数作为参数,在传递函数参数时通常都是用的函数引用,当时还不太理解,现在终于解惑了。
fun main(args: Array<String>) {
val ages = listOf(18, 23, 17, 25)
ages.filter(::isOld)
.forEach(::println) // 打印:23,25
}
fun isOld(age: Int): Boolean = age > 20
这里,::isOdd 是一个 (Int) -> Boolean 函数类型的值。
如果我们需要使用一个类的成员函数, 或者一个扩展函数, 就必须使用限定符. 比如, String::toCharArray指向 String 上的一个扩展函数, 函数类型为: String.() -> CharArray
属性引用
在Kotlin中, 对于包级别的属性可以作为对象来访问, 方法是使用 :: 操作符,我们可以获取一个类型为 KProperty对象。
var x = 1
fun main(args: Array<String>) {
println(::x.get()) // 打印结果为: "1"
::x.set(2)
println(x) // 打印结果为: "2"
}
注
构造器引用
构造器引用可以用于使用函数类型对象的地方, 但这个函数类型接受的参数应该与构造器相同, 返回值应该是构造器所属类的对象实例. 引用构造器使用 :: 操作符, 再加上类名称.
fun main(args: Array<String>) {
var person = newPerson("Jone", 20, "SH", ::Person)
}
fun newPerson(name: String, age: Int, address: String, factory: (String, Int, String) -> Person) : Person{
return factory(name, age, address)
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Kotlin
# 反射
# 反射详解
# 反射使用方法
# Android kotlin使用注解实现防按钮连点功能的示例
# 教你一文搞懂Kotlin中的Jvm注解
# Kotlin中的反射机制深入讲解
# Kotlin 泛型边界型变及星投影使用详解
# Kotlin object的几种用法示例详解
# Kotlin 高阶函数与Lambda表达式示例详解
# Kotlin注解与反射的定义及创建使用详解
# 可以通过
# 是一个
# 我们可以
# 可以得到
# 这是
# 如果你
# 还可以
# 不太
# 再加上
# 希望能
# 作为一个
# 请注意
# 可以使用
# 要得
# 谢谢大家
# 来实现
# 所需要
# 应用程序
# 库中
# 返回值
相关文章:
开源网站制作软件,开源网站什么意思?
南京网站制作费用,南京远驱官方网站?
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
如何高效配置香港服务器实现快速建站?
正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?
宝塔建站助手安装配置与建站模板使用全流程解析
小型网站建站如何选择虚拟主机?
制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?
如何通过PHP快速构建高效问答网站功能?
如何快速上传自定义模板至建站之星?
如何选择靠谱的建站公司加盟品牌?
济南企业网站制作公司,济南社保单位网上缴费步骤?
如何通过商城免费建站系统源码自定义网站主题?
如何零基础在云服务器搭建WordPress站点?
如何正确选择百度移动适配建站域名?
网站好制作吗知乎,网站开发好学吗?有什么技巧?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
如何通过可视化优化提升建站效果?
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
如何快速查询域名建站关键信息?
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
如何在橙子建站上传落地页?操作指南详解
建站主机数据库如何配置才能提升网站性能?
如何在阿里云域名上完成建站全流程?
建站之星2.7模板:企业网站建设与h5定制设计专题
制作网站外包平台,自动化接单网站有哪些?
高防服务器租用如何选择配置与防御等级?
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
企业网站制作公司网页,推荐几家专业的天津网站制作公司?
常州自助建站费用包含哪些项目?
建站之星代理如何获取技术支持?
如何选择网络建站服务器?高效建站必看指南
如何登录建站主机?访问步骤全解析
如何在建站之星网店版论坛获取技术支持?
宝华建站服务条款解析:五站合一功能与SEO优化设置指南
如何用景安虚拟主机手机版绑定域名建站?
做企业网站制作流程,企业网站制作基本流程有哪些?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
网站制作员失业,怎样查看自己网站的注册者?
大型企业网站制作流程,做网站需要注册公司吗?
定制建站方案优化指南:企业官网开发与建站费用解析
如何快速生成高效建站系统源代码?
宿州网站制作公司兴策,安徽省低保查询网站?
移民网站制作流程,怎么看加拿大移民官网?
网站制作难吗安全吗,做一个网站需要多久时间?
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
网站制作话术技巧,网站推广做的好怎么话术?
如何在IIS7上新建站点并设置安全权限?
建站主机选购指南:核心配置与性价比推荐解析
*请认真填写需求信息,我们会在24小时内与您取得联系。