Как я могу установить значение по умолчанию для параметра в Groovy AST - PullRequest
0 голосов
/ 06 декабря 2018

Я добавляю методы через Groovy AST, и я хотел бы добавить метод с 2 параметрами: Map и Closure

static void randomMethod(Map params,Closure body = {}){

}

Я хочу добавить параметр Closure со значением по умолчанию:{} поэтому я могу вызывать метод с аргументом карты, только если я хочу.

Когда я генерирую свой метод, у меня есть следующий код:

        List<Parameter> parameters = new ArrayList<>()
        Parameter params = new Parameter(new ClassNode(Map),"params")
        Parameter body = new Parameter(new ClassNode(Closure),"body")
        Statement statement = new BlockStatement([],new VariableScope())
        ClosureExpression closureExpression = new ClosureExpression(new Parameter[0],statement)
        body.setNodeMetaData("INITIAL_EXPRESSION",closureExpression)
        parameters.add(params)
        parameters.add(body)

При применении этого к классу Iget:

startup failed:
General error during class generation: NPE while processing Person.groovy

Если я добавлю параметры нормально, они работают, могу ли я как-то добавить их со значением по умолчанию без получения NullPointerException?

...