JDK7のJavaNIO.2APIを試してみました。
特に、メソッドを呼び出したいと思います。Paths#get(String first, String... more)
これは、少なくとも1つの文字列を受け取り、それに対応する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;
ご想像のとおり。結局のところ、String[]を期待しているものにObject[]を渡しているのです。
(object-array)フォームを削除しようとしましたが、Clojureがタイプヒントの有無にかかわらずget(URI)メソッドを呼び出そうとするだけです。
Paths#get(String、String ...)の2番目の引数としてnilを渡すと、正しいメソッドが呼び出されますが、Java7はNPEで失敗します。
ClojureでString[]型を表現する方法を見つけることができないようです-それを行うか、ディスパッチシステムにヒントを提供する必要があると思います。
何か案は?