有没有办法将方法的参数列为集合?

时间:2014-08-29 17:12:29

标签: groovy

如果我有这样的方法:

void someMethod(int one, int two, int three) 
{
  log.debug("One = ${one}, two = ${two}, three = ${three}")
}

有没有办法避免在借记消息中列出每个参数?我想打印出所有参数的值,而不必单独列出每个参数。

2 个答案:

答案 0 :(得分:1)

你可以使用varargs:

void someMethod( int... args ) {
    println "Args = $args"
}

担心调用方法时会使用3个以上的参数?然后确保您只在方法内处理args[0]args[2]

答案 1 :(得分:0)

您也可以使用拦截器构造:

class Sample {
    void someMethod(int one, int two, int three) {
//        println("One = ${one}, two = ${two}, three = ${three}")
    }
}

class SampleInterceptor implements Interceptor {

    boolean doInvoke() {
        true
    }

    Object beforeInvoke(Object obj, String name, Object[] args) {
        if(name == "someMethod")
            println args
    }

    Object afterInvoke(Object obj, String name, Object[] args, Object result) {
        result
    }
}

def proxy = ProxyMetaClass.getInstance(Sample)
def interceptor = new SampleInterceptor()
proxy.interceptor = interceptor

proxy.use {
    def h = new Sample()
    h.someMethod(1,2,3)
}

查看sample