2009-12-20 12 views
7

Dlaczego właśnie w tym momencie własność "metaClass" Groovy zwraca wartość null. Przykład:Gdy "metaClass" Groovy zwraca wartość null

import net.sf.json.groovy.JsonSlurper 


@Grab(group='net.sf.json-lib', module='json-lib', version='2.3', classifier='jdk15') 

def printMeta(obj) { 

    obj.metaClass.properties.each {println "Property: ${it.name}"} 
} 

def raw = /{"test":"this is a test"}/ 

def json = new JsonSlurper().parseText(raw); 
printMeta (json); 

wiem, że JsonSlurper wykorzystuje metaprogramowanie, więc dlaczego mam następujące:

Caught: java.lang.NullPointerException: Cannot get property 'properties' on null object at MetaTest.printMeta(MetaTest.groovy:17) at MetaTest.run(MetaTest.groovy:24)

Jestem wszystkim pomysłów.

Dzięki!

Odpowiedz

13

W ogóle nie grałem z plikami JSON, ale zazwyczaj dzieje się tak, gdy próbujesz wywołać .metaClass na mapie.

Jeśli nie znam klasy, do której dzwonię wcześniej, zazwyczaj będę się nazywał .getMetaClass(). W przeciwnym razie tego typu rzeczy gryzą mnie, gdy próbuję przekazać mapy jako obiekty pozorowane.

(Jest to ta sama przyczyna zwykle chcesz zadzwonić .getClass() zamiast .class uzyskać obiekt Class).

+0

Stało się to dla mnie choć metaklasą nie została wywołana na mapie. Twoja odpowiedź pomoże rozwiązać problem. Dzięki – ken

Powiązane problemy