我知道我在Clojure中使用代理实现了一个Java接口:
(def print-element-handler
(proxy [DefaultHandler] []
(startElement [uri local qname atts]
(println (format "Saw element: %s" qname)))))
请注意,接口方法中的四个参数 startElement 有四个参数 [uri local qname atts] 。
假设Java接口中的方法具有可变数量的args,如下所示:
List<Task> getTasks(Object... args);
我在相应的Clojure函数中为arg列表添加了什么?
答案 0 :(得分:3)
我不是100%肯定,因为我现在无法测试它,但我相信答案是你只有一个参数用于阵列。我知道当你用varags调用Java方法时,你必须在传入之前将Clojure集合转换为数组。我想这里没有什么不同。
例如,以下是format
的来源:
(defn format
"Formats a string using java.lang.String.format,
see java.util.Formatter for format string syntax"
{:tag String
:added "1.0"}
[fmt & args]
(String/format fmt (to-array args)))