我可以在Clojure中定义一个java接口吗?

Mic*_*ale 1 clojure

我想在clojure中定义一个java接口 - (以及实现它) - 我理解实现可以通过代理和gen-class完成,但总是假设接口已经定义.

Jar*_*314 5

您可以使用clojure.core/definterface和生成Java接口clojure.core/gen-interface.(definterface扩展为致电gen-interface.)

(ns demo.api)

(definterface Store
  (^demo.api.Store buy [])
  (^demo.api.Store buy [^int q])
  (^demo.api.Store sell [])
  (^int getQty []))

;; or

(gen-interface
 :name demo.api.Store
 :methods [[buy [] demo.api.Store]
           [buy [int] demo.api.Store]
           [sell [] demo.api.Store]
           [getQty [] int]])
Run Code Online (Sandbox Code Playgroud)

从此博客文章中提取.

如果你想要一个"接口",在一般意义上,那么看看Clojure协议.