首页 > Java > java教程 > 如何从 Java 调用 Clojure 函数?

如何从 Java 调用 Clojure 函数?

Linda Hamilton
发布: 2024-12-04 03:43:10
原创
480 人浏览过

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 函数可以包装到 -binomial 中以进行 Java 访问:

(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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板