如何在Groovy AST中为参数设置默认值

时间:2018-12-06 14:13:07

标签: groovy nullpointerexception metaprogramming transformation abstract-syntax-tree

我正在通过Groovy AST添加方法,我想添加一个具有2个参数的方法:Map和Closure

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

}

我想添加一个默认值为{}的Closure参数,以便仅在需要时才可以使用map参数调用该方法。

在生成方法的地方,我有以下代码:

        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)

将其应用于课程时,我得到:

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

如果我正常添加参数,是否可以以某种默认值添加它们而无需获取NullPointerException

0 个答案:

没有答案