You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Clojure中调用Java可变参数方法?into-array使用遇问题

解决Clojure调用Paths/get时的ClassCastException问题

你遇到的错误根源在于Paths.get有两个重载方法:

  1. Paths.get(URI uri)
  2. Paths.get(String first, String... more)

当你直接传递into-array生成的String数组时,Clojure会把这个数组当作单个参数,匹配到了接受URI的重载方法,自然抛出类型转换异常——String数组无法转成URI类型。

正确的实现方式有三种:

  • 直接传递多个字符串参数(Clojure会自动处理可变参数,无需手动转数组):

    (java.nio.file.Paths/get "myfolder" "aaa.txt")
    
  • 用apply把数组元素展开为方法的多个参数:

    (apply java.nio.file.Paths/get (into-array ["myfolder" "aaa.txt"]))
    
  • 手动拆分参数,第一个元素作为固定参数,剩余部分转成数组作为可变参数:

    (java.nio.file.Paths/get "myfolder" (into-array ["aaa.txt"]))
    

其中第一种写法最简洁,除非需要动态生成路径片段,否则优先直接传多个字符串即可。

内容的提问来源于stack exchange,提问作者Don Tomato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 06:44:50