Heim > Java > javaLernprogramm > Wie rufe ich Clojure-Funktionen aus Java auf?

Wie rufe ich Clojure-Funktionen aus Java auf?

Linda Hamilton
Freigeben: 2024-12-04 03:43:10
Original
481 Leute haben es durchsucht

How to Call Clojure Functions from Java?

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]]))
Nach dem Login kopieren

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 Funktion

binomial 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))
Nach dem Login kopieren

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));
    }
}
Nach dem Login kopieren

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
Nach dem Login kopieren
Diese Ausgabe zeigt, dass die Funktion

-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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage