How to handle java variable length arguments in clojure?

前提是你 提交于 2019-11-26 15:26:44

Since Java varargs are actually arrays, you can call vararg functions in Clojure by passing an array.

You could convert a Clojure seq (maybe by using Clojure's variety of variable argument functions) into an array:

 (TestClass/aStaticFunction (into-array Integer [(int 1),(int 2)]))

or

(defn a-static-function-wrapper [& args]
  (TestClass/aStaticFunction (into-array Integer args))

Or make an array and set its indices manually

(TestClass/aStaticFunction (doto (make-array Integer 3)
                              (aset 0 first-element)
                              (aset 1 second-element)
                              (aset 2 third-element)))

Java variable length arguments actually want an array as input.

So in Clojure the call should be something like:

(TestClass/aStaticFunction (into-array Integer some-sequence-of-integers))
(TestClass/aStaticFunction (to-array '(1 2 3 4 5)))

For e.g.

(java.util.Arrays/asList (to-array '(1 2 3 4 5)))
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!