title: How can I proxy a Java class with overloaded methods in Clojure?
body: <p>For example, given a Java class like:</p>
  
  <pre><code>public class Foo {
    public String bar(String x) {
      return "string " + x;
    }
    public String bar(Integer x) {
      return "integer " + x;
    }
  }
  </code></pre>
  
  <p>How can I subclass Foo in Clojure and override only the bar(String) method but reuse the bar(Integer) from the original Foo class.  Something like this (but this won't work):</p>
  
  <pre><code>(let [myFoo (proxy [Foo] [] 
                (bar [^String x] (str "my " x)))]
    (println "with string:  " (.bar myFoo "abc"))
    (println "with integer: " (.bar myFoo 10)))
  </code></pre>
  
  <p>This example will print:</p>
  
  <pre><code>with string:   my abc 
  with integer:  my 10
  </code></pre>
  
  <p>but I would like to get the effect of:</p>
  
  <pre><code>with string:   my abc 
  with integer:  integer 10
  </code></pre>