Проблемы с вызовом вариативной функции Java из Clojure

Я играю с Java NIO.2 API из JDK 7.

В частности, я хочу вызвать метод: Пути # get (сначала строка, строка ... подробнее)

Это статический метод, который принимает по крайней мере одну строку, и возвращает соответствующий ему объект Path. Есть перегруженная форма: Paths # get (URI uri)

Однако я не могу вызвать метод top из Clojure. Ближайшее, что я могу получить, это:

(Paths/get ^String dir-fq (object-array 0))

, который не работает с:

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;

, как и следовало ожидать. В конце концов, мы передаем Object [] тому, что ожидает String [].

Я попытался удалить форму (объект-массив), но это просто заставило Clojure попытаться вызвать метод get (URI) - как с подсказкой типа, так и без нее.

Передача nil в качестве второго аргумента в Пути # get (String, String ...) вызывают вызов правильного метода, но затем Java 7 не работает с NPE.

Кажется, я не могу найти способ в Clojure выразить тип String [] - Я предполагаю, что мне нужно либо сделать это, либо дать подсказку системе диспетчеризации.

Есть идеи?

6
задан kittylyst 12 April 2011 в 16:26
поделиться