2009-12-20 24 views
7

Neden ihtiyacım olduğunda Groovy'nin "metaClass" özelliği null değerini döndürür. Örnek:Groovy'nin "metaClass" değeri sıfır olduğunda

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); 

Ben JsonSlurper metaprogramming kullandığı biliyoruz, bu yüzden alırım neden şu:

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

fikirlerim bütün değilim.

Teşekkürler!

cevap

13

JSON içeriklerinde hiç oynamamışım, ancak bu genellikle bir harita üzerinde .metaClass'ı çağırmaya çalıştığınızda gerçekleşir.

Önceden arayacağım sınıfı bilmiyorum, özellikle .getMetaClass() özelliğini arayacağım. Aksi halde, bu tür şeyler, etrafındaki nesneleri sahte nesneler olarak aktarmaya çalışırken ısırır.

(Bu genellikle Sınıf nesnesi almak için yerine .class arasında) .getClass (aramak istediğiniz aynı nedenidir.)

+0

metaclass bir harita üzerinde çağrılan değildi gerçi bu bana oldu. Sorunu çözmene rağmen sorunun cevabını çözdün. Teşekkürler – ken

İlgili konular