clojure
Java interop
Zoeken…
Syntaxis
-
.
laten we u toegang tot instantiemethoden -
.-
laten we u toegang tot instantievelden -
..
macro uitbreiden naar meerdere geneste aanroepen van.
Opmerkingen
Als gehoste taal biedt Clojure uitstekende ondersteuning voor interoperabiliteit met Java. Clojure-code kan ook rechtstreeks vanuit Java worden aangeroepen.
Een instantiemethode op een Java-object aanroepen
U kunt een instantiemethode oproepen met behulp van de .
speciale vorm:
(.trim " hello ")
;;=> "hello"
U kunt instantiemethoden aanroepen met argumenten als deze:
(.substring "hello" 0 2)
;;=> "he"
Verwijzen naar een instantieveld op een Java-object
U kunt een instantieveld oproepen met de .-
syntaxis:
(def p (java.awt.Point. 0 1))
(.-x p)
;;=> 0
(.-y p)
;;=> 1
Een nieuw Java-object maken
U kunt op twee manieren exemplaren van objecten maken:
(java.awt.Point. 0 1)
;;=> => #object[java.awt.Point 0x3776d535 "java.awt.Point[x=0,y=1]"]
Of
(new java.awt.Point 0 1)
;;=> => #object[java.awt.Point 0x3776d535 "java.awt.Point[x=0,y=1]"]
Een statische methode aanroepen
U kunt statische methoden als volgt aanroepen:
(System/currentTimeMillis)
;;=> 1469493415265
Of geef argumenten als volgt door:
(System/setProperty "foo" "42")
;;=> nil
(System/getProperty "foo")
;;=> "42"
Een Clojure-functie oproepen vanuit Java
U kunt een Clojure-functie vanuit Java-code oproepen door de functie op te zoeken en op te roepen:
IFn times = Clojure.var("clojure.core", "*");
times.invoke(2, 2);
Hiermee wordt de *
-functie clojure.core
uit de naamruimte clojure.core
en wordt deze opgeroepen met de argumenten 2 & 2.
Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow