clojure
Java interop
サーチ…
構文
-
.
インスタンスメソッドにアクセスしましょう -
.-
あなたは、インスタンスフィールドにアクセスしてみましょう -
..
の複数のネストされた呼び出しに拡大したマクロ.
備考
ホスト言語として、ClojureはJavaとの優れた相互運用性のサポートを提供します。 Clojureコードは、Javaから直接呼び出すこともできます。
Javaオブジェクトでインスタンスメソッドを呼び出す
を使用してインスタンスメソッドを呼び出すことができます.
特別形態:
(.trim " hello ")
;;=> "hello"
次のような引数を使ってインスタンスメソッドを呼び出すことができます:
(.substring "hello" 0 2)
;;=> "he"
Javaオブジェクトのインスタンスフィールドの参照
.-
構文を使用してインスタンスフィールドを呼び出すことができます:
(def p (java.awt.Point. 0 1))
(.-x p)
;;=> 0
(.-y p)
;;=> 1
新しいJavaオブジェクトの作成
次のいずれかの方法でオブジェクトのインスタンスを作成できます。
(java.awt.Point. 0 1)
;;=> => #object[java.awt.Point 0x3776d535 "java.awt.Point[x=0,y=1]"]
または
(new java.awt.Point 0 1)
;;=> => #object[java.awt.Point 0x3776d535 "java.awt.Point[x=0,y=1]"]
静的メソッドの呼び出し
次のような静的メソッドを呼び出すことができます:
(System/currentTimeMillis)
;;=> 1469493415265
あるいは次のように引数を渡します:
(System/setProperty "foo" "42")
;;=> nil
(System/getProperty "foo")
;;=> "42"
JavaからClojure関数を呼び出す
関数をルックアップして呼び出して、JavaコードからClojure関数を呼び出すことができます。
IFn times = Clojure.var("clojure.core", "*");
times.invoke(2, 2);
これはclojure.core
名前空間から*
関数をclojure.core
、引数2と2を使ってそれを呼び出します。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow