我试图弄清楚 Groovy 如何将 a 转换char[]
为 aString
内的 a GString
。
例子:
char[] pchar = ['p', 'a', 's', 's']
println "$pchar"
结果:
经过
起初我以为它会在 char[] (http://groovy.codehaus.org/groovy-jdk/primitive-types/char[].html#toString()) 上使用 toString() 方法。但运行以下代码的结果似乎另有说明:
char[] pchar = ['p', 'a', 's', 's']
println "$pchar"
pchar.class.metaClass.toString = {->
"****"
}
println pchar.toString()
println "$pchar"
结果:
经过
****
经过
我也尝试过覆盖invokeMethod()
以试图弄清楚它无济于事:
char[] pchar = ['p', 'a', 's', 's']
println "$pchar"
pchar.class.metaClass.toString = {->
"****"
}
pchar.class.metaClass.invokeMethod = {String methodName, Object arguments ->
println("Method called on ${delegate.class}: $methodName, $arguments")
def metaMethod = delegate.metaClass.getMetaMethod(methodName)
return metaMethod.invoke(delegate, arguments)
}
println pchar.toString()
println "$pchar"
结果:
经过
在类 [C: toString, [] 上调用的方法
****
经过
有谁知道 Groovy 是如何进行这种转换的?