Search code examples
javaclojureclojure-java-interopjava-interop

How do I pass a Java function a String[] argument?


I have a function in Java that I would like to call from Clojure. The particular prototype is the following:

public MyClass create(String aaa, File bbb, String[] args)

I therefore need to pass a String[] as a parameter, from a Clojure function. Passing any of the following:

  • (def args [])
  • (def args [""])
  • (def args ^String [])

all yield an exception: No matching method found: createScript for class BlaBla..

I have also seen this Java interop documentation, but I am probably missing something. How do I call this method from Clojure?


Solution

  • (.create (MyClass.) "aaa" (File. "my file") (into-array ["foo" "bar" "baz"]))
    

    Should do the trick.

    See https://clojuredocs.org/clojure.core/into-array for more details.