使用 java.nio.Paths 在 Clojure 中引发奇怪的异常

Using java.nio.Paths raises weird exception in Clojure

我正在尝试使用路径 class 中的静态方法,但我收到此消息:

user=> (java.nio.file.Paths/get "/tmp" "test.db")
ClassCastException java.lang.String cannot be cast to [Ljava.lang.String;  hacking-capital.core/eval8240 (form-init317418023117164331.clj:1)

它应该根据 javadoc 工作,但事实并非如此。为什么? 我在用着 Java HotSpot(TM) 64 位服务器 VM 1.8.0_66-b17、Linux

上的 Clojure 1.7.0

方括号字符表示一个数组,因此该方法需要一个字符串数组

[Ljava.lang.String;

Java API 显示 Paths.get() 接受可变数量的字符串参数,但在幕后,这意味着该方法接受一个数组。我猜想 Clojure 没有将 String 参数绑定到数组中。

这个tutorial表明必须编写Java方法来处理参数数组。换句话说,javac 编译器处理可变数量的参数是为了方便。