Вызывание функций Java от Clojure

Я могу использовать (.toUpperCase "ХОРОШИЙ") в clojure, поскольку "ХОРОШИЙ" строка Java, и строка Java имеет toUpperCase метод.

Я также могу использовать (java.io. Файл/разделитель) от clojure как способ вызвать функции Java.

Но, почему я не могу звонить (java.lang/Object, ожидают 3) или (java.lang. System/println "привет")?

  • Разве мы не можем использовать все функции Java от Clojure?
  • В противном случае есть ли правило для вызова их? Если так, где ссылка для тех функций?
10
задан prosseek 4 August 2010 в 14:51
поделиться

2 ответа

Вы можете использовать все функции Java из Clojure. См. Отличную страницу о взаимодействии Clojure Java .

В частности, вам просто нужно правильно настроить синтаксис в зависимости от того, с какой конструкцией Java вы имеете дело, например выполнение метода println для статического члена "out" из java.lang.System:

(.println (System/out) "hi")
18
ответ дан 3 December 2019 в 15:34
поделиться

Как отмечалось ранее, два приведенных вами примера немного не соответствуют действительности:

(.wait (java.lang.Object.) 3) ;; this actually throws an IllegalMonitorStateException

(.println java.lang.System/out "hi")

Должно работать!

7
ответ дан 3 December 2019 в 15:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: