clojure java互操作和接口

时间:2014-04-30 02:21:03

标签: clojure clojure-java-interop

我在使用Clojure的Java界面时遇到了麻烦。

我有以下课程:公共类OpenAccess

有一个方法:static Connection connect(String url)

其中Connection是一个接口:public interface Connection

在Java中我会这样做来建立连接:

Connection conn = OpenAccess.connect(url);

我在Clojure中尝试过以下内容,但它不起作用:

(defn connection [url]
  (let [oa (access.OpenAccess.)
    connection (reify access.Connection
             .....
(.connect oa connection)))

错误" IllegalArgumentException找不到匹配的方法:连接类访问.OpenAccess"

我无法弄清楚如何从Clojure正确执行Java接口。

1 个答案:

答案 0 :(得分:3)

看起来像是一个静态电话:

(defn connection [url]
  (OpenAccess/connect url))

如果你需要输入提示,你会像这样使用它:

(let [^Connection conn (connection "http://foo")]
  // use your conn 
  )

你不需要 ^连接,但它会告诉编译器conn上方法调用的类型,这将避免反射。