clojure
Java interop
Sök…
Syntax
-
.
låt dig komma åt instansmetoder -
.-
låt dig komma åt instansfält -
..
makro expanderar till flera kapslade invokationer av.
Anmärkningar
Som värdspråk ger Clojure utmärkt interoperabilitetsstöd med Java. Clojure-kod kan också ringas direkt från Java.
Ringa en instansmetod på ett Java-objekt
Du kan ringa en instansmetod med hjälp av .
speciell form:
(.trim " hello ")
;;=> "hello"
Du kan kalla instansmetoder med sådana argument:
(.substring "hello" 0 2)
;;=> "he"
Referera ett instansfält på ett Java-objekt
Du kan ringa ett instansfält med hjälp av .-
syntax:
(def p (java.awt.Point. 0 1))
(.-x p)
;;=> 0
(.-y p)
;;=> 1
Skapa ett nytt Java-objekt
Du kan skapa exempel på objekt på ett av två sätt:
(java.awt.Point. 0 1)
;;=> => #object[java.awt.Point 0x3776d535 "java.awt.Point[x=0,y=1]"]
Eller
(new java.awt.Point 0 1)
;;=> => #object[java.awt.Point 0x3776d535 "java.awt.Point[x=0,y=1]"]
Ringa en statisk metod
Du kan kalla statiska metoder så här:
(System/currentTimeMillis)
;;=> 1469493415265
Eller skicka in argument, så här:
(System/setProperty "foo" "42")
;;=> nil
(System/getProperty "foo")
;;=> "42"
Ringa en Clojure-funktion från Java
Du kan ringa en Clojure-funktion från Java-kod genom att slå upp funktionen och åberopa den:
IFn times = Clojure.var("clojure.core", "*");
times.invoke(2, 2);
Detta ser upp *
-funktionen från clojure.core
namnområdet och åberopar den med argumenten 2 och 2.
Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow