从Clojure调用可变参数Java函数时出现问题
|
我正在使用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 []类型的方法-我猜我要么需要这样做,要么向调度系统提供提示。
有任何想法吗?
没有找到相关结果
已邀请:
1 个回复
蓄荣糖些
完全按照其说的去做:它使一个对象阵列。如果要创建其他类型的数组,则
和
是您的朋友。例如这里:
在这种情况下,“ 8”说明符是可选的:如果省略了数组的所需类型,Clojure将使用第一个对象的类型作为数组的组件类型。