はここで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
さて、Clojure関数とJavaメソッドは完全に異なっています(実装の観点から)。 IIRCでは、静的メソッドから自動的にClojure関数を生成する機能が考慮されましたが、実際には拒否されました。 –