>Java >java지도 시간 >Java에서 Clojure 함수를 호출하는 방법은 무엇입니까?

Java에서 Clojure 함수를 호출하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-04 03:43:10495검색

How to Call Clojure Functions from Java?

Java에서 Clojure 호출

Java에서 Clojure를 호출하는 것은 단지 jar를 컴파일하고 내부 메서드를 호출하는 것만큼 간단하지 않습니다. 대신, 성공적인 상호 운용성을 위해서는 특정 기술이 필요합니다.

Clojure 네임스페이스 생성

Java에서 Clojure 함수를 호출할 수 있도록 하려면 :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))

Adding Clojure Jar to Classpath

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

이 출력은 Java에서 -binomial 함수에 액세스할 수 있고 해당 결과를 사용할 수 있음을 보여줍니다. Java 계산에 사용됩니다.

위 내용은 Java에서 Clojure 함수를 호출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.