I'm trying to implement the following Java interface in Clojure:
package quickfix; public interface MessageFactory { Message create(String beginString, String msgType); Group create(String beginString, String msgType, int correspondingFieldID); } The following Clojure code is my attempt at doing this:
(defn -create-message-factory [] (reify quickfix.MessageFactory (create [beginString msgType] nil) (create [beginString msgType correspondingFieldID] nil))) This fails to compile with the error:
java.lang.IllegalArgumentException: Can't define method not in interfaces: create
The documentation suggests overloaded interface methods are ok, so long as the arity is different as it is in this case:
If a method is overloaded in a protocol/interface, multiple independent method definitions must be supplied. If overloaded with same arity in an interface you must specify complete hints to disambiguate - a missing hint implies Object.
How can I get this working?