使用 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 编译器处理可变数量的参数是为了方便。
我正在尝试使用路径 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 编译器处理可变数量的参数是为了方便。