2014-08-29 109 views
0

如果我有一个方法,像这样:有没有办法将参数作为集合列出来?

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

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

回答

1

你可以使用可变参数:

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

担心超过3个参数,得到调用时使用的方法?然后确保您只处理args[0]args[2]内部的方法。

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

相关问题