gpt4 book ai didi

java - Clojure 和 JavaFX 2——将多参数传递给 JavaFX 方法

转载 作者:搜寻专家 更新时间:2023-10-31 20:21:11 25 4
gpt4 key购买 nike

许多 JavaFx 方法都采用 var args,例如 Group,它在 Java 中声明为:

public Group(Node... children)

其他例如:

public KeyFrame(Duration time, KeyValue... values)

我发现 ... 意味着我应该将 java 数组传递给该方法,所以我一直在做这样的事情,

(-> timeline .getKeyFrames 
(.addAll
(into-array [(KeyFrame. blabla) (KeyFrame. blabla)]))`

每次有 var arg 时都必须执行 (into-array...) 很烦人,当 var arg 是我实际的基类时更烦人传入。例如

(Group. (into-array [(Circle. 100) (Rectangle. 100 100)]))

导致类型不匹配错误。相反,我必须这样做:

(Group. (into-array Node [(Circle. 100) (Rectangle. 100 100)]))

所以我做了这个功能:

(defn make-group [& items]
(Group. (into-array Node items)))

这对群组没问题,但不能解决一般问题。

那么有没有一种解决省略号/可变参数问题的好方法,这样我就不必为每个可变参数方法创建特殊函数了?此函数的要求是它采用您要调用的方法(例如 Group)、固定参数、var 参数,并且函数会以某种方式神奇地知道找到公共(public)基类var args 中的元素。

谢谢

最佳答案

您是否尝试过将参数放入 vector 中?我没有尝试过你提到的所有用例,但是当使用 addAll() 方法时,我只是将参数放入文字 vector 中,例如

    (.addAll (.getChildren btn-pane) [new-puzzle-pane check-box hint-btn
check-btn solve-btn load-btn save-btn
print-btn about-btn spacer])

关于java - Clojure 和 JavaFX 2——将多参数传递给 JavaFX 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16813143/

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