2

我在使用 Clojure 的 Java 接口时遇到问题。

我有以下课程:公共课 OpenAccess

其中有一个方法:静态连接连接(字符串网址)

其中 Connection 是一个接口:公共接口 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 接口。

4

1 回答 1

3

看起来像一个静态调用:

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

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

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

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

于 2014-04-30T02:27:24.607 回答