Rumah >Java >javaTutorial >Bagaimana untuk Memanggil Fungsi Clojure dari Java?

Bagaimana untuk Memanggil Fungsi Clojure dari Java?

Linda Hamilton
Linda Hamiltonasal
2024-12-04 03:43:10485semak imbas

How to Call Clojure Functions from Java?

Memanggil Clojure dari Java

Memanggil Clojure dari Java tidak semudah hanya menyusun balang dan menggunakan kaedah dalamannya. Sebaliknya, teknik khusus diperlukan untuk kesalingoperasian yang berjaya.

Mencipta Ruang Nama Clojure

Untuk menjadikan fungsi Clojure boleh dipanggil dari Java, adalah penting untuk menentukan ruang nama dengan :gen-class arahan. Arahan ini menentukan nama kelas dan kaedah untuk didedahkan kepada Java. Sebagai contoh, coretan berikut mentakrifkan ruang nama dengan kaedah statik bernama binomial:

(ns com.domain.tiny
  (:gen-class
    :name com.domain.tiny
    :methods [#^{:static true} [binomial [int int] double]]))

Menggunakan Fungsi Pembungkus

Java memerlukan fungsi pembalut untuk memanggil fungsi Clojure. Fungsi pembalut ini sepatutnya mempunyai nama yang sama dengan fungsi Clojure tetapi dengan tanda sempang (-) di hadapan. Contohnya, fungsi binomial daripada coretan sebelumnya boleh dibungkus ke dalam -binomial untuk akses Java:

(defn -binomial
  "A Java-callable wrapper around the 'binomial' function."
  [n k]
  (binomial n k))

Menambahkan Clojure Jar ke Classpath

Balang Clojure mesti ditambahkan pada laluan kelas untuk membuat kod yang disusun boleh diakses oleh Java. Langkah ini memastikan bahawa kelas Clojure yang diperlukan tersedia untuk pelaksanaan.

Contoh Kod Java

Dengan ruang nama dan fungsi pembalut Clojure ditakrifkan, di bawah ialah program Java asas yang menggunakan fungsi -binomial yang ditakrifkan dalam Clojure balang:

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));
    }
}

Menjalankan Program Java

Pastikan balang Clojure berada di laluan kelas dan kemudian jalankan program Java:

$ java -cp tiny.jar Main
(binomial 5 3): 10.0
(binomial 10042, 111): 4.9068389575068143E263

Output ini menunjukkan bahawa fungsi -binomial boleh diakses dari Java dan hasilnya tersedia untuk digunakan dalam pengiraan Java.

Atas ialah kandungan terperinci Bagaimana untuk Memanggil Fungsi Clojure dari Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn