clojure
Interop Java
Recherche…
Syntaxe
-
.
vous permet d'accéder aux méthodes d'instance -
.-
vous permet d'accéder aux champs d'instance -
..
macro en expansion à plusieurs invocations imbriquées de.
Remarques
En tant que langage hébergé, Clojure fournit un excellent support d'interopérabilité avec Java. Le code Clojure peut également être appelé directement depuis Java.
Appeler une méthode d'instance sur un objet Java
Vous pouvez appeler une méthode d'instance avec le .
forme spéciale:
(.trim " hello ")
;;=> "hello"
Vous pouvez appeler des méthodes d'instance avec des arguments comme ceci:
(.substring "hello" 0 2)
;;=> "he"
Référencement d'un champ d'instance sur un objet Java
Vous pouvez appeler un champ d'instance à l'aide de la syntaxe .-
:
(def p (java.awt.Point. 0 1))
(.-x p)
;;=> 0
(.-y p)
;;=> 1
Créer un nouvel objet Java
Vous pouvez créer une instance d'objets de deux manières:
(java.awt.Point. 0 1)
;;=> => #object[java.awt.Point 0x3776d535 "java.awt.Point[x=0,y=1]"]
Ou
(new java.awt.Point 0 1)
;;=> => #object[java.awt.Point 0x3776d535 "java.awt.Point[x=0,y=1]"]
Appeler une méthode statique
Vous pouvez appeler des méthodes statiques comme ceci:
(System/currentTimeMillis)
;;=> 1469493415265
Ou passer des arguments, comme ceci:
(System/setProperty "foo" "42")
;;=> nil
(System/getProperty "foo")
;;=> "42"
Appeler une fonction Clojure à partir de Java
Vous pouvez appeler une fonction Clojure à partir du code Java en recherchant la fonction et en l'appelant:
IFn times = Clojure.var("clojure.core", "*");
times.invoke(2, 2);
Cela recherche la fonction *
depuis l' clojure.core
noms clojure.core
et l'invoque avec les arguments 2 & 2.