如果我有这样的方法:
void someMethod(int one, int two, int three)
{
log.debug("One = ${one}, two = ${two}, three = ${three}")
}
有没有办法避免在借记消息中列出每个参数?我想打印出所有参数的值,而不必单独列出每个参数。
答案 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。