Kotlin - 反射

Kotlin - 反射 首页 / Kotlin入门教程 / Kotlin - 反射

反射是一组语言和库功能,可在运行时检查程序的结构。 Kotlin将函数和属性作为该语言的一等公民,并在运行时检查这些函数和属性。

类引用

类引用用于获取KClass对象的引用。要获取静态Kclass的引用,无涯教程应该使用类文字(即,使用双冒号)。

val c1 = String::class
val c2 = MyClass::class

无涯教程通过在KClass实例上使用.java属性来获取Java类引用。

Note: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))

函数引用示例

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和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()函数读取其值。

要重置可变类型属性的值,引用属性具有set()方法。

fun main(args: Array<String>) {
  println(::x.get())
  println(::x.name)
  println(::y.set(10))
}
val x = 5
var y = 5

输出:

5
x
10

访问成员类属性

属性引用还可以访问类的其他成员的属性。例如:

链接:https://www.learnfk.comhttps://www.learnfk.com/kotlin/kotlin-reflection.html

来源:LearnFk无涯教程网

class A(val x: Int)
fun main(args: Array<String>) {
    val prop = A::x
    println(prop.get(A(5)))
}

输出:

5

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

从0开始学微服务 -〔胡忠想〕

Android开发高手课 -〔张绍文〕

重学前端 -〔程劭非(winter)〕

Java并发编程实战 -〔王宝令〕

张汉东的Rust实战课 -〔张汉东〕

操作系统实战45讲 -〔彭东〕

大数据经典论文解读 -〔徐文浩〕

计算机基础实战课 -〔彭东〕

深入浅出可观测性 -〔翁一磊〕

好记忆不如烂笔头。留下您的足迹吧 :)