2017-08-18 5 views
3

Supposons que vous avez les éléments suivants, déclaration d'objet imbriqué:Comment accéder à l'objet-membres d'une déclaration d'objet dans Kotlin

object Father { 
    val fathersField = "value" 
    object Child { 
     val childsField = 3.141592654 
    } 
} 

Lorsque j'utilise la réflexion à partir de Father, je suis en mesure de trouver le terrain fathersField seulement mais aucun membre référençant l'instance Child.

Est-il possible de trouver ces déclarations d'objets internes par réflexion? Et si oui, comment?

Répondre

2

Utilisation nestedClasses de kotlin-reflect:

Father::class.nestedClasses.find { it.simpleName == "Child" } 

Ou, comme @ s1m0nw1 suggéré, utiliser la réflexion Java et convertir le Class en arrière si nécessaire pour KClass avec .kotlin:

Father::class.java.classes.first { it.simpleName == "Child" }.kotlin 
+0

Oh mon, c'est tout. Merci beaucoup! –

1

Ca y est:

println(Father.javaClass.classes[0]) 
>> class packagepath.Father$Child