我可以重新定义String#length吗?

Itt*_*ayD 7 string groovy

我想重新实现一个Java类的方法.例如,"hi".length()要返回4.(我怎样才能做到这一点?

我知道使用SomeClass.metaClass我可以获得对现有方法的引用并定义新的(或重写)方法,但我似乎无法对现有Java方法执行此操作.

Rid*_*del 2

似乎可以通过滥用String metaClass来实现。但到目前为止我在 groovy 控制台中所做的尝试并没有达到预期的结果:

def oldLength = String.metaClass.length
String.metaClass.length = { ->
    return oldLength+10;
}

println "hi".length()
Run Code Online (Sandbox Code Playgroud)

输出悲伤的2

我想你可以看看Proxy MetaClassDelegating metaClass