2016-07-31 59 views
8

每个对象都有一个组件,用于像component1,component2等每个属性。 我想知道在Kotlin中是否有任何方法来遍历类的每个组件。 说我有类:Kotlin:迭代对象的组件

class User(age:Int, name:String) 

我可以这样做:

for(component in anUserObject){ 
    //do some stuff 
} 

回答

19

首先,componentN属性仅适用于数据类,不适用于每个对象。

没有API专门用于遍历组件,但你可以使用Kotlin reflection遍历所有类的属性:

class User(val age: Int, val name: String) 

fun main(args: Array<String>) { 
    val user = User(25, "Bob") 
    for (prop in User::class.memberProperties) { 
     println("${prop.name} = ${prop.get(user)}") 
    } 
} 
+0

一个问题。我该怎么做,或者是否有可能做类似这样的事情:prop.get(this)== prop.get(other)?谢谢。 – Sermilion

+1

您需要检查并将每个属性转换为'KProperty1'来调用getter –

+1

这仍然是最新的?获取没有属性的错误memberProperties –