title: Is it possible for a class written in Java to implement a protocol written in Clojure?
body: <p>I can only find stuff about the inverse; using Clojure to implement Java interfaces. However, I want to write a programme in Clojure and allow one to extend it with Java. For example:</p>
  
  <pre><code># P.clj
  (defprotocol P
    (f [a])
    (g [a b]))
  
  # I.java
  public class I implements P {
      public Object f(Object a) { … }
      public Object g(Object a, Object b) { … }
  }
  </code></pre>
  
  <p>Also, how would I specify parameter types so I don’t have to use <code>Object</code> everywhere?</p>
  
  <p>The only option I currently see is using dot-notation and relying on duck typing but I prefer compile-time verification of interface implementation on the Java side.</p>