我在使用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接口。
答案 0 :(得分:3)
看起来像是一个静态电话:
(defn connection [url]
(OpenAccess/connect url))
如果你需要输入提示,你会像这样使用它:
(let [^Connection conn (connection "http://foo")]
// use your conn
)
你不需要 ^连接,但它会告诉编译器conn上方法调用的类型,这将避免反射。