groovy.lang.GroovyRuntimeException:Ambiguous method

目录

 

问题

根因及解决


问题

今天线上的计算脚本报了个问题,报警如下是 groovy 运行时异常。调用方法 org.springframework.util.CollectionUtils#isEmpty 出现了异常。异常原因是由于方法重载造成了歧义。无法确定如何调用方法 [null],因为它同时匹配了如下两个方法原型:

  • [接口 java.util.Collection]
  • [接口 java.util.Map]
groovy.lang.GroovyRuntimeException:Ambiguous method overloading for method org.springframework.util.CollectionUtils#isEmpty.
Cannot resolve which method to invoke for [null] due to overlapping prototypes between:
\t[interface java.util.Collection]
\t[interface java.util.Map]

根因及解决

问题代码如下,截图Java代码返回值定义的是List,但是在做了一些列判断之后若没有符合条件的数据返回null。

groovy.lang.GroovyRuntimeException:Ambiguous method_第1张图片

 这个报错是因为调用org.springframework.util.CollectionUtils#isEmpty方法时,传入的参数为null,而CollectionUtils#isEmpty方法有两个重载方法,一个是接收Collection参数的,另一个是接收Map参数的。由于传入的参数为null,无法确定应该调用哪个重载方法,因此出现了重载方法模糊的异常。解决这个报错的方法是提供一个非空的参数,以明确调用哪个重载方法。

groovy.lang.GroovyRuntimeException:Ambiguous method_第2张图片

return CollectionUtils.isEmpty(result) ? Lists.newArrayList() : result;

 

你可能感兴趣的:(Groovy,开发语言,gru)