Я добавляю методы через 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
?