Appeler Clojure depuis Java
Appeler Clojure depuis Java n'est pas aussi simple que de simplement compiler un pot et d'invoquer ses méthodes internes. Au lieu de cela, des techniques spécifiques sont nécessaires pour une interopérabilité réussie.
Création d'un espace de noms Clojure
Pour rendre les fonctions Clojure appelables depuis Java, il est essentiel de définir un espace de noms avec le :gen-classdirective. Cette directive spécifie le nom de la classe et les méthodes à exposer à Java. Par exemple, l'extrait suivant définit un espace de noms avec une méthode statique nommée binomial :
(ns com.domain.tiny (:gen-class :name com.domain.tiny :methods [#^{:static true} [binomial [int int] double]]))
Utilisation d'une fonction Wrapper
Java nécessite un fonction wrapper pour appeler une fonction Clojure. Cette fonction wrapper doit avoir le même nom que la fonction Clojure mais avec un trait d'union (-) en tête. Par exemple, la fonction binomial de l'extrait précédent peut être enveloppée dans -binomial pour un accès Java :
(defn -binomial "A Java-callable wrapper around the 'binomial' function." [n k] (binomial n k))
Ajout de Clojure Jar à Classpath
Le pot Clojure doit être ajouté au classpath pour rendre le code compilé accessible à Java. Cette étape garantit que les classes Clojure nécessaires sont disponibles pour l'exécution.
Exemple de code Java
Avec l'espace de noms Clojure et la fonction wrapper définis, vous trouverez ci-dessous un programme Java de base qui invoque la fonction -binomial définie dans le Clojure jar :
import com.domain.tiny; public class Main { public static void main(String[] args) { System.out.println("(binomial 5 3): " + tiny.binomial(5, 3)); System.out.println("(binomial 10042, 111): " + tiny.binomial(10042, 111)); } }
Exécuter le programme Java
Assurez-vous que le pot Clojure est sur le chemin de classe, puis exécutez le programme Java :
$ java -cp tiny.jar Main (binomial 5 3): 10.0 (binomial 10042, 111): 4.9068389575068143E263
Cette sortie démontre que la fonction -binomial est accessible depuis Java et que ses résultats sont disponibles pour être utilisés en Java calculs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!