我正在通过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
?