Когда “метакласс” Groovy возвращает пустой указатель

Почему это - это как раз в то самое время, когда мне нужен он, пустой указатель возвратов свойства "метакласса" Groovy. Пример:

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

Я знаю, что JsonSlurper использует метапрограммирование, итак, почему делают я получаю следующее:

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

Я - все из идей.

Спасибо!

9
задан djcredo 20 December 2009 в 01:41
поделиться

1 ответ

Я вообще никогда не играл с JSON, но обычно это происходит, когда вы пытаетесь вызвать .metaClass на карте.

Если я не знаю класс Я звоню заранее, обычно специально вызываю .getMetaClass (). В противном случае такие вещи меня укусят, когда я пытаюсь передать карты как фиктивные объекты.

(Это та же самая причина, по которой вы обычно хотите вызвать .getClass () вместо .class, чтобы получить объект класса.)

15
ответ дан 4 December 2019 в 13:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: