【问题标题】:How to instantiate Path object using clojure如何使用 clojure 实例化 Path 对象
【发布时间】:2014-08-05 18:09:07
【问题描述】:

由于Path 类没有公共构造函数,所以路径对象是使用get 工厂方法在Paths 对象中创建的。

例如

Path p2 = Paths.get("/home/admin","Migrations","/blog/tables/6-rating.xml");

//or

Path p2 = Paths.get(new URI("file://home/debianaut/Migrations/blog.sakhunzai/tables/6-rating.xml"));

我们如何以 clojure 方式做到这一点?

【问题讨论】:

  • (Paths/get "/home/admin" "Migrations" "/blog/tables/6-rating.xml") CompilerException java.lang.IllegalArgumentException: No matching method: get, compiling:(NO_SOURCE_PATH:5:2)
  • (Paths/get "/home/debianaut/Migrations/blog.sakhunzai/tables/6-rating.xml") ClassCastException java.lang.String cannot be cast to java.net.URI user/eval5598 (NO_SOURCE_FILE:11)

标签: java clojure java.nio.file


【解决方案1】:
user> (java.nio.file.Paths/get "/home/justin" (into-array [".lein" "profiles.clj"]))
#<UnixPath /home/justin/.lein/profiles.clj>

varargs java 方法需要一个包含所有剩余 args 作为其最终参数的数组。

需要数组外的第一个字符串,以便方法调度匹配正确的方法。

为了完整起见,这里是一个使用 URI 的示例(更直接):

user> (java.nio.file.Paths/get (java.net.URI. "file:///home/justin"))
#<UnixPath /home/justin>

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-28
  • 1970-01-01
  • 1970-01-01
  • 2013-04-19
相关资源
最近更新 更多