2016-07-31 6 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

getter를 호출하려면 각 속성을 확인하고 'KProperty1'로 캐스팅해야합니다. –

+1

여전히 최신입니까? 속성이없는 오류 가져 오기 memberProperties –

관련 문제