相关疑难解决方法(0)

Clojure使用重载方法来重新定义Java接口

我正在尝试在Clojure中实现以下Java接口:

package quickfix;

public interface MessageFactory {
    Message create(String beginString, String msgType);
    Group create(String beginString, String msgType, int correspondingFieldID);
}
Run Code Online (Sandbox Code Playgroud)

以下Clojure代码是我尝试这样做的:

(defn -create-message-factory 
  []
  (reify quickfix.MessageFactory
    (create [beginString msgType]
      nil)
    (create [beginString msgType correspondingFieldID]
      nil)))
Run Code Online (Sandbox Code Playgroud)

这无法编译错误:

java.lang.IllegalArgumentException:无法在接口中定义方法:create

文档提出重载接口方法都行,只要该元数是不同的,因为它是在这种情况下:

如果方法在协议/接口中过载,则必须提供多个独立的方法定义.如果在接口中重载了相同的arity,则必须指定完全提示以消除歧义 - 缺少提示意味着Object.

我怎样才能使这个工作?

clojure clojure-java-interop

5
推荐指数
1
解决办法
2282
查看次数

标签 统计

clojure ×1

clojure-java-interop ×1