2017-03-28 5 views
1

Zum Beispiel: Ich habe eine MethodeGroovy: Gibt es eine Möglichkeit Festigkeitsklasse erhalten erwarteten Namen

def someMethod(object){ 
    //retrieve all properties as key:value pair 
    for(prop in object.getProperties()) { 
     println(prop.getValue().getClass()) 
    } 
} 

Es funktioniert gut, wenn die Eigenschaft bereits Wert hat. Aber wenn es nicht wahr

kehrt
org.codehaus.groovy.runtime.NullObject 

So ist es eine Möglichkeit, Klassennamen erhalten erwartet für Immobilien?

Antwort

3

ich es herausfinden:

def someMethod(object) { 
    for(prop in object.getClass().getDeclaredFields()) { 
     if (!prop.getName().contains("\$") && prop.getName() != "metaClass") 
      println(prop.getName() + " " + prop.getType()) 
    } 
} 
0

Es ist wahrscheinlich sauberer zu tun:

object.getClass().declaredFields.findAll { !it.synthetic }.each { 
    println "${it.name $it.type" 
} 
Verwandte Themen