2010-10-26 18 views
5

Estoy tratando de enumerar las propiedades (es decir, todas las propiedades que tienen un método getter) usando Groovy. Puedo hacer esto usando myObj.properties.each { k,v -> println v} y eso funciona bien. Pero eso también se imprime para toda la jerarquía de superclase. Si solo quiero enumerar las propiedades de la clase actual (y no de la superclase), ¿es posible?Groovy Listar todas las propiedades para la clase

Respuesta

3

Esta es una forma que pirateé pero quizás puedas construir sobre ella.

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) 
    } 
} 
+0

gracias. Eso es lo que estaba pensando, pero esperaba que hubiera una manera más "groovier" de hacerlo. –

1

intento con lo siguiente:

myObj.declaredFields.collect{it.name} 
+0

Esto obtendrá cosas que no son propiedades. Obtendrá todos los campos: estaba buscando cosas solo con getters. –

Cuestiones relacionadas