title: Changing Object.toString() dynamically in Groovy has no effect when calling Integer.toString()
body: <p>I injected overridden method <code>toString</code> into <code>Object.metaClass</code>：</p>
  
  <pre><code>Object.metaClass.toString ={
     System.out.println("the string is $delegate")
  }
  </code></pre>
  
  <p>and I thought that following code will execute this method:</p>
  
  <pre><code>1500.toString()
  </code></pre>
  
  <p>But it didn't not,nothing was printed to the console. That is what exactly confuses me: if something goes bad, then an error is to throw out; if <code>Object.metaClass.toString</code> is found and invoked, then the message will turn up, but why it is not working? What happened inside? </p>