Вот Clojure REPL сессия:Clojure: Почему я не могу ссылаться на методы класса, не вызывая их?
moon.core> Double
java.lang.Double
moon.core> (Double/parseDouble "1.0")
1.0
moon.core> Double/parseDouble
CompilerException java.lang.RuntimeException: Unable to find static field: parseDouble in class java.lang.Double, compiling:(*cider-repl moon*:1:7159)
Я могу ссылаться Double
, и я в состоянии вызоваDouble/parseDouble
, но я не могу напрямую ссылка это. Я вижу тот же результат для других методов класса в стандартной библиотеке Java (например, Math/abs
, Integer/parseInt
). Почему?
Интересно. Меня смущает тот факт, что я могу ссылаться (без вызова) функций Clojure, но не на Java. – Brendan
Yep, функции Clojure и методы Java совершенно разные (с точки зрения реализации). IIRC, была рассмотрена возможность автоматического создания функции Clojure из статического метода, но в конечном итоге была отвергнута по прагматическим причинам. –