Как использовать java.time в repl clojure? Java-взаимодействие не может найти классы - PullRequest
1 голос
/ 09 октября 2019

Как использовать библиотеку java.time в clojure? Я даже не могу импортировать его в мой реплик.

user=> *clojure-version*
{:major 1, :minor 10, :incremental 0, :qualifier nil}
user=> (java.util.Date.)
#object[java.util.Date 0x5c22a205 "Tue Oct 08 22:10:21 PDT 2019"]

user=> (java.time.Instant.)
Syntax error (IllegalArgumentException) compiling new at (REPL:1:1).
No matching ctor found for class java.time.Instant

Он находится в документации Java, и у меня установлена ​​Java 13 https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/time/Instant.html

Там https://github.com/dm3/clojure.java-time, которыйзаявляет, что использует его, это здорово, если бы я пытался использовать его в проекте, я мог бы это сделать. Но я просто хочу импортировать его и поиграть с датой в репле. Как это делается?

1 Ответ

2 голосов
/ 09 октября 2019

В Clojure синтаксис (some.class.Name.) с "."после имени класса означает вызвать конструктор для этого класса. Если вы посмотрите на страницу документа Java для класса java.time.Instant, вы заметите, что у него нет конструкторов: https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html

Существует метод с именем now, который возвращает объект типа Instant, которыйВы можете позвонить с этим синтаксисом в Clojure:

user=> (java.time.Instant/now)
#object[java.time.Instant 0x599f571f "2019-10-09T05:18:06.192393Z"]
...