Maison > Java > javaDidacticiel > Comment appeler des fonctions Clojure depuis Java ?

Comment appeler des fonctions Clojure depuis Java ?

Linda Hamilton
Libérer: 2024-12-04 03:43:10
original
493 Les gens l'ont consulté

How to Call Clojure Functions from Java?

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]]))
Copier après la connexion

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))
Copier après la connexion

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));
    }
}
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal