首頁 >Java >java教程 >如何在不使用 RT 編譯的情況下從 Java 呼叫 Clojure 函數?

如何在不使用 RT 編譯的情況下從 Java 呼叫 Clojure 函數?

DDD
DDD原創
2024-12-21 19:10:12834瀏覽

How to Call Clojure Functions from Java without Using RT Compilation?

在沒有RT 編譯的情況下從Java 與Clojure 進行互通

儘管使用clojure.lang.RT 類別進行Clojure 到Java的建議已過時互通性,目前的方法不再需要這種方法。這種改進的方法涉及將 Clojure 程式碼編譯到獨立的 JAR 中並直接從 Java 呼叫它。這是逐步指南:

  1. 編譯Clojure 程式碼:

    • 建立一個包含您想要的函數的Clojure 檔案來自Java的調用。
    • 確保 Clojure 檔案包含要產生的 :methods 關鍵字Java 中的靜態方法。
    • 使用指令 lein jar 將檔案編譯為 JAR。
  2. 從Java 存取Clojure 函數:

    • 將產生的Clojure JAR 包含在您的Java 專案中類路徑。
    • 建立 Java 類,匯入必要的 Clojure 類別並使用 - 前綴呼叫靜態方法。
  3. 範例 Clojure程式碼:

    (ns com.example.clojure)
    
    (defn binomial [n k]
      (let [a (inc n)]
        (loop [b 1
               c 1]
          (if (> b k)
            c
            (recur (inc b) (* (/ (- a b) b) c))))))
  4. 範例程式碼:

    import com.example.clojure;
    
    public class JavaCaller {
    
        public static void main(String[] args) {
            System.out.println("(binomial 5 3): " + clojure.binomial(5, 3));
            System.out.println("(binomial 10042, 111): " + clojure.binomial(10042, 111));
        }
    }
  5. 執行Java程式:

    • 使用javac 編譯生成JAR。
    • 執行 JAR 以從 Java 呼叫 Clojure 函數。

這種方法允許 Clojure 和 Java 之間的無縫互通性,消除了需要中間步驟或複雜的編譯過程。

以上是如何在不使用 RT 編譯的情況下從 Java 呼叫 Clojure 函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn