Java 从grails闭包返回特定值

Java 从grails闭包返回特定值,java,grails,groovy,closures,Java,Grails,Groovy,Closures,我在从grails闭包返回特定值时遇到了一个问题,在我的例子中是ArrayList 这是我的密码: def fun= { list1, limit = list1.size()-1 -> def returnList = new ArrayList() for(Elem el in list1) { def info = el.getInfo() boolean toAdd = true if(info.siz

我在从grails闭包返回特定值时遇到了一个问题,在我的例子中是ArrayList

这是我的密码:

def fun=
{
    list1, limit = list1.size()-1 ->
    def returnList = new ArrayList()
    for(Elem el in list1)
    {
        def info = el.getInfo()
        boolean toAdd = true
        if(info.size() <= 1)
        {              
           aut.each
           {
               icz ->
                   if(icz.info == "hehe")
                   {
                       toAdd = false
                   }
           }
        }
        if(toAdd)
        {
            returnList.add(el)
            --limit
        }
        if(limit < 0)
        {
            break
        }
    }
    returnList
}
def-fun=
{
list1,limit=list1.size()-1->
def returnList=new ArrayList()
用于(列表1中的元素)
{
def info=el.getInfo()
布尔toAdd=true
如果(信息大小()
如果(icz.info==“呵呵”)
{
toAdd=假
}
}
}
如果(toAdd)
{
返回列表。添加(el)
--极限
}
如果(限值<0)
{
打破
}
}
返回名单
}
我是这样执行的:fun(list1,10)或fun(list1),其中list1包含一些元素

另外,当我调试代码时,我发现我的闭包返回值类型是一个事件。我不知道我做错了什么,当然,如果这样做是合法的


我还尝试将特定类型的闭包转换为ArrayList,但这会引发一个错误,即闭包无法转换为ArrayList。我将非常感谢您的帮助!

我找到了我犯错误的地方,调用闭包而不是:

def res = fun(list1, 10)
应该是:

def res = fun.call(list1, 10)

对我来说一切都很好:)

这些电话是等价的。另外,我也不会把可选的参数弄得太乱。我会这样说:

def fun = { list1, limit = null ->
  if( null == limit ) limit = list1.size() - 1
  ...
}

你不需要电话谢谢你的建议:)!