我正在玩 JDK 7 中的 Java NIO.2 API。
特别是,我想调用该方法:Paths#get(String first, String... more)
这是一个静态方法,它至少接受一个字符串,并返回一个与之对应的 Path 对象。有一个重载的形式:Paths#get(URI uri)
但是,我似乎无法从 Clojure 调用 top 方法。我似乎能得到的最接近的是:
(Paths/get ^String dir-fq (object-array 0))
失败了:
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
如您所料。毕竟,我们将 Object[] 传递给期待 String[] 的东西。
我试过删除 (object-array) 表单——但这只会导致 Clojure 尝试调用 get(URI) 方法——无论有没有类型提示。
将 nil 作为第二个参数传递给 Paths#get(String, String...) 会导致调用正确的方法,但 Java 7 随后会因 NPE 而失败。
我似乎无法在 Clojure 中找到表达 String[] 类型的方法——我猜我要么需要这样做,要么向调度系统提供提示。
有任何想法吗?