日々常々

ふつうのプログラマがあたりまえにしたいこと。

Groovyの処理の差し替えとtoString

class A {
    String toString() {
        return "AAA"
    }
}

def a = new A();
println a

a.metaClass.toString = {return "BBB"}
println a
println a.toString()

toStringを差し替えてみよーってだけなんだけど…

結果

AAA
AAA
BBB

勝手に呼ばれるのと明示的に呼ぶので挙動が変わる…?