J'essaye de lister les propriétés (c'est-à-dire toutes les propriétés qui ont une méthode getter) en utilisant Groovy. Je peux le faire en utilisant myObj.properties.each { k,v -> println v}
et cela fonctionne bien. Mais, cela imprime également pour toute la hiérarchie de la superclasse. Si je veux juste lister les propriétés pour la classe en cours (et pas la super classe), est-ce possible?Groovy Liste toutes les propriétés de la classe
5
A
Répondre
3
Voici une façon dont j'ai piraté mais peut-être que vous pouvez en tirer parti.
class Abc {
def a
def b
}
class Xyz extends Abc {
def c
def d
}
def xyz = new Xyz(c:1,d:2)
xyz.metaClass.methods.findAll{it.declaringClass.name == xyz.class.name}.each {
if(it.name.startsWith("get")) {
println xyz.metaClass.invokeMethod(xyz.class,xyz,it.name,null,false,true)
}
}
1
Essayez ce qui suit:
myObj.declaredFields.collect{it.name}
+0
Cela donnera des choses qui ne sont pas des propriétés. Il aura tous les champs - je cherchais des choses avec des getters seulement. –
merci. C'est ce que je pensais, mais j'espérais qu'il y avait une façon «plus groovy» de le faire. –