gpt4 book ai didi

interface - 在 Clojure 中实现一个带有可变数量 args 的 Java 接口(interface)方法

转载 作者:行者123 更新时间:2023-12-01 01:21:14 25 4
gpt4 key购买 nike

我知道我使用这样的代理在 Clojure 中实现了一个 Java 接口(interface):

(def print-element-handler
(proxy [DefaultHandler] []
(startElement [uri local qname atts]
(println (format "Saw element: %s" qname)))))

请注意,接口(interface)方法 startElement 中的四个 args 有四个 args,[uri local qname atts]。

假设 Java 接口(interface)中的方法具有可变数量的参数,如下所示:
List<Task> getTasks(Object... args);

我在相应的 Clojure 函数中为 arg 列表放了什么?

最佳答案

我不能 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)))

关于interface - 在 Clojure 中实现一个带有可变数量 args 的 Java 接口(interface)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9103777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com