Clojure aus Java aufrufen
Clojure aus Java aufzurufen ist nicht so einfach wie das bloße Kompilieren eines Jars und das Aufrufen seiner internen Methoden. Stattdessen sind spezifische Techniken für eine erfolgreiche Interoperabilität erforderlich.
Erstellen eines Clojure-Namespace
Um Clojure-Funktionen von Java aus aufrufbar zu machen, ist es wichtig, einen Namespace mit dem :gen-class-Direktive. Diese Direktive gibt den Klassennamen und die Methoden an, die für Java verfügbar gemacht werden sollen. Das folgende Snippet definiert beispielsweise einen Namespace mit einer statischen Methode namens binomial:
(ns com.domain.tiny (:gen-class :name com.domain.tiny :methods [#^{:static true} [binomial [int int] double]]))
Verwenden einer Wrapper-Funktion
Java erfordert a Wrapper-Funktion zum Aufrufen einer Clojure-Funktion. Diese Wrapper-Funktion sollte denselben Namen wie die Clojure-Funktion haben, jedoch mit einem führenden Bindestrich (-). Beispielsweise kann die Funktionbinomial aus dem vorherigen Snippet in -binomial für den Java-Zugriff eingeschlossen werden:
(defn -binomial "A Java-callable wrapper around the 'binomial' function." [n k] (binomial n k))
Clojure Jar zum Klassenpfad hinzufügen
Das Clojure-JAR muss zum Klassenpfad hinzugefügt werden, um den kompilierten Code zugänglich zu machen Java. Dieser Schritt stellt sicher, dass die erforderlichen Clojure-Klassen zur Ausführung verfügbar sind.Beispiel-Java-Code
Mit dem definierten Clojure-Namespace und der Wrapper-Funktion finden Sie unten ein grundlegendes Java-Programm, das ruft die in Clojure definierte Funktion-binomial auf 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)); } }
Das Java-Programm ausführen
Stellen Sie sicher, dass sich das Clojure-Jar im Klassenpfad befindet, und führen Sie dann das Java-Programm aus:$ java -cp tiny.jar Main (binomial 5 3): 10.0 (binomial 10042, 111): 4.9068389575068143E263
-binomial von Java aus zugänglich ist und ihre Ergebnisse zur Verwendung in Java verfügbar sind Berechnungen.
Das obige ist der detaillierte Inhalt vonWie rufe ich Clojure-Funktionen aus Java auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!