2013-02-19 2 views
2

У меня есть класс Java с помощью конструкторы с переменным числом аргументов Струнных так:Как преобразовать clojure.lang.ArraySeq в строку Java []?

public Foo(String...args); 

Я пытаюсь создать макияж Foo Многометодным в Clojure, чтобы справиться с этим:

(defmethod make-foo clojure.lang.ArraySeq [& args] (new Foo (into-array args))) 

Но когда я называю его

(make-foo ["one" "two"]) 

я получаю: IllegalArgumentException нет соответствия т е р не найдено

Я хотел бы также, чтобы быть в состоянии назвать его

(make-foo '("one" "two")) 

Я вижу, есть к массиву вариантов для Интс, поплавки и т.д., но не String. Итак, как я могу справиться с этим делом?

ответ

2

make-foo как написано будет работать, если вы назвали его как (make-foo "one" "two"), или вы можете удалить & из его определения, а затем передать его последовательностям.

+0

Удаление и трюк. Я не понимал, что все формы defmethod не должны иметь одну и ту же подпись аргумента – klucar

Смежные вопросы