如何在 Kotlin 中迭代类的属性?
Kotlin 是 JetBrains 开发的一种静态类型的通用编程语言,构建了 IntelliJ IDEA、PhpStorm、Appcode 等世界一流的 IDE。它由 JetBrains 于 2011 年首次推出,是一种新的 JVM 语言。 Kotlin 是一种面向对象的语言,是一种比Java“更好的语言”,但仍可与Java代码完全互操作。 Kotlin 中的反射允许我们在运行时自省程序的结构。这也使我们能够内省类修饰符、方法和属性。在本文中,我们将看到如何迭代 Kotlin 类的属性。所以让我们开始吧!
例子
在以下步骤中,我们将看到如何迭代类的属性:
1. 这是我们的 Student 类,具有 roll_number 和 full_name 属性:
class Student constructor (var roll_number : Int, var full_name : String)
2. 现在,我们将使用 for 语句,因为我们想要遍历一个类可以具有的多个属性:
Kotlin
fun main (args: Array) {
var student=Student (2013001, "Alok Yadav" )
for (property in Student : : class. memberProperties){
println ("${property . name) = ${property . get (student) }")
}
}
Kotlin
open class Person{
val isHuman : Boolean = true
}
Kotlin
for (property in Student :: class.declaredMemberProperties) {
println ("${property.name} = ${property.get(student)}")
}
输出:
full_name = Alok Yadav
roll_number = 2013001
实现非常简单。我们能够实现对类属性的自省,因为我们使用了反射,而memberProperties只是KClass的众多功能之一。需要注意的一点是memberProperties返回在此类及其所有超类中声明的所有非扩展属性。假设我们有一个Person类,如下所示:
科特林
open class Person{
val isHuman : Boolean = true
}
此外,我们使用Person类扩展了Student类,然后之前使用memberProperties方法的相同代码将产生如下所示的输出:
full name = Aanand Shekhar Roy
roll_number = 2013001
isHuman = true
因此,如果您只想遍历Student类中声明的字段,则需要声明的MemberProperties 方法。这是一个声明成员属性的示例:
科特林
for (property in Student :: class.declaredMemberProperties) {
println ("${property.name} = ${property.get(student)}")
}
输出:
full_name = alok yadav
roll_number = 2013001
前面的示例是针对 Kotlin kClass的。假设您想要迭代Java Class
something.javaClass.kotlin.memberProperties.
Kotlin 的反射库提供了一个方法列表,借助这些方法,您可以在运行时执行大量自省。为此,请在 kotlinlanf.org 上查看,或者我们可以说 Kotlin 官方文档,您可以单击此处。