ホームページ > Java > &#&チュートリアル > Java から Clojure 関数を呼び出すにはどうすればよいですか?

Java から Clojure 関数を呼び出すにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-04 03:43:10
オリジナル
481 人が閲覧しました

How to Call Clojure Functions from Java?

Java から Clojure を呼び出す

Java から Clojure を呼び出すことは、単に jar をコンパイルしてその内部メソッドを呼び出すほど簡単ではありません。代わりに、相互運用性を成功させるには、特定のテクニックが必要です。

Clojure ネームスペースの作成

Clojure 関数を Java から呼び出し可能にするには、:gen-class ディレクティブ。このディレクティブは、Java に公開するクラス名とメソッドを指定します。たとえば、次のスニペットは、binomial という名前の静的メソッドを使用して名前空間を定義します。

(ns com.domain.tiny
  (:gen-class
    :name com.domain.tiny
    :methods [#^{:static true} [binomial [int int] double]]))
ログイン後にコピー

ラッパー関数の使用

Java には、 Clojure 関数を呼び出すためのラッパー関数。このラッパー関数は、Clojure 関数と同じ名前にする必要がありますが、先頭にハイフン (-) を付けます。たとえば、前のスニペットの

binomial 関数は、Java アクセス用に -binomial にラップできます。

(defn -binomial
  "A Java-callable wrapper around the 'binomial' function."
  [n k]
  (binomial n k))
ログイン後にコピー

Clojure Jar をクラスパスに追加

コンパイルされたファイルを作成するには、Clojure jar をクラスパスに追加する必要がありますJava からアクセスできるコード。この手順により、必要な Clojure クラスが実行可能であることが確認されます。

Java コードの例

Clojure 名前空間とラッパー関数が定義された、以下の基本的な Java プログラムです。 Clojure で定義されている

-binomial 関数を呼び出します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));
    }
}
ログイン後にコピー

Java プログラムの実行

Clojure jar がクラスパス上にあることを確認してから、Java プログラムを実行します:

$ java -cp tiny.jar Main
(binomial 5 3): 10.0
(binomial 10042, 111): 4.9068389575068143E263
ログイン後にコピー
この出力は、

-binomial 関数が Java とその結果は Java 計算で使用できます。

以上がJava から Clojure 関数を呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート