В следующем фрагменте Groovy я пытаюсь заменить оба метода hashCode
и toString
String.metaClass.toString = {-> "override" }
String.metaClass.hashCode = {-> 22 }
Но когда я тестирую, работает только замена hashCode
String s = "foo"
println s.hashCode() // prints 22
println s.toString() // prints "foo"
Является ли toString
каким-то особым случаем (возможно, по соображениям безопасности)?