- Kotlin环境设置(命令行)
- Kotlin Hello World程序(命令行)
- Kotlin程序概念解释
- Kotlin开发环境设置(IDE)
- Kotlin第一个程序(IDE)
- Kotlin变量
- Kotlin数据类型
- Kotlin类型转换
- Kotlin运算符
- Kotlin表达式、语句和块
- Kotlin标准输入/输出
- Kotlin注释
- 控制流程
- 函数
- 数组
- 字符串
- 异常处理
- 空安全
- 集合
- 注解
- 反射
- Kotlin OOP
- 范围
- Java互操作性
- 正则表达式
Kotlin反射
反射(Reflection)是一组语言和库特性,用于在运行时检查程序的结构。 Kotlin将函数和属性作为语言中的一等公民,并在运行时检查这些函数和属性。
类引用
类引用用于获取KClass
对象的引用。 为了获得静态Kclass
的引用,应该使用类文字(即使用双冒号)。
类引用的语法:
val c1 = String::class val c2 = MyClass::class
参考值是KClass
的类类型。 KClass
类引用与Java类引用不同。 通过在KClass
实例上使用.java
属性来获取Java类引用。
注意:
KClass
代表一个类并提供检查功能。 要获取此类的实例,请使用语法:::class
。
函数参考
Kotlin函数用于获得使用双冒号的函数参考。 函数引用可以在另一个函数中用作参数。 要在另一个函数中使用此引用,使用::
运算符:
fun isPositive(x: Int) = x> 0
fun isPositive(x: Int) = x> 0 val number = listOf(-10,-5,0,5,10) print(number.filter(::isPositive))
Kotlin函数引用示例
fun main(args: Array<String>) { fun isPositive(x: Int) = x > 0 val numbers = listOf(-10, -5, 0, 5, 10) println(numbers.filter(::isPositive)) }
执行上面示例代码,得到以下结果 -
[5,10]
在上面的程序中::isPositive
是函数类型(Int)-> Boolean
的值。
重载函数引用运算符(::)
当从上下文中获知预期类型时,运算符::
可以与重载函数一起使用。例如:
创建一个isPositive()
函数,它接受两种不同的Int
和String
类型,并使用不同的类型参数调用此函数。
fun main(args: Array<String>) { fun isPositive(x: Int) = x > 0 fun isPositive(s: String) = s== "kotlin" || s == "Kotlin" val numbers = listOf(-10,-5,0,5,10) val strings = listOf("kotlin", "program") println(numbers.filter(::isPositive)) println(strings.filter(::isPositive)) }
执行上面示例代码,得到以下结果 -
[5, 10] [kotlin]
属性参考
也可以在Kotlin中访问属性作为第一类对象,以访问可以使用的对象属性::
运算符:
要评估KProperty <Int>
类型的属性对象,使用表达式::variableName
。表达式:: variableName
可使用get()
函数使用name
和readits
值来检索属性名称。
要重置可变类型属性的值,引用属性具有set()
方法。示例代码 -
fun main(args: Array<String>) { println(::x.get()) println(::x.name) println(::y.set(10)) } val x = 5 var y = 5
执行上面示例代码,得到以下结果 -
5 x kotlin.Unit
访问成员类的属性
属性引用还可以访问其他类成员的属性,例如:
class A(val x: Int) fun main(args: Array<String>) { val prop = A::x println(prop.get(A(5))) }
执行上面示例代码,得到以下结果 -
5
上一篇:Kotlin注解
下一篇:Kotlin类和对象
扫描二维码
程序员编程王