Clojure - interfejs Java

Jak już wiemy, kod Clojure działa na końcu w wirtualnym środowisku Java. Dlatego ma sens tylko to, że Clojure jest w stanie wykorzystać wszystkie funkcje Java. W tym rozdziale omówimy korelację między Clojure a Javą.

Wywołanie metod Java

Metody Java można wywołać przy użyciu notacji kropkowej. Przykładem są stringi. Ponieważ wszystkie ciągi w Clojure są i tak napisami Java, możesz wywoływać zwykłe metody Java na łańcuchach.

Przykład tego, jak to się robi, pokazano w poniższym programie.

Przykład

(ns Project
   (:gen-class))
(defn Example []
   (println (.toUpperCase "Hello World")))
(Example)

Powyższy program generuje następujące dane wyjściowe. Z kodu widać, że jeśli po prostu wywołasz notację kropkową dla dowolnej metody łańcuchowej, zadziała ona również w Clojure.

Wynik

HELLO WORLD

Wywołanie metod Java z parametrami

Możesz także wywołać metody Java z parametrami. Przykład tego, jak to się robi, pokazano w poniższym programie.

Przykład

(ns Project
   (:gen-class))
(defn Example []
   (println (.indexOf "Hello World","e")))
(Example)

Powyższy program generuje następujące dane wyjściowe. Z powyższego kodu widać, że przekazujemy parametr „e” do metody indexOf. Powyższy program generuje następujące dane wyjściowe.

Wynik

1

Tworzenie obiektów Java

Obiekty można tworzyć w Clojure za pomocą słowa kluczowego „new”, podobnie jak w Javie.

Przykład tego, jak to się robi, pokazano w poniższym programie.

Przykład

(ns Project
   (:gen-class))
(defn Example []
   (def str1 (new String "Hello"))
   (println str1))
(Example)

Powyższy program generuje następujące dane wyjściowe. Z powyższego kodu widać, że możemy użyć słowa kluczowego „new”, aby utworzyć nowy obiekt z istniejącej klasy String w Javie. Możemy przekazać wartość podczas tworzenia obiektu, tak jak robimy to w Javie. Powyższy program generuje następujące dane wyjściowe.

Wynik

Hello

Poniżej znajduje się kolejny przykład, który pokazuje, jak możemy stworzyć obiekt klasy Integer i użyć go w zwykłych poleceniach Clojure.

Przykład

(ns Project
   (:gen-class))
(defn Example []
   (def my-int(new Integer 1))
   (println (+ 2 my-int)))
(Example)

Powyższy program generuje następujące dane wyjściowe.

Wynik

3

Polecenie importu

Możemy również użyć polecenia importu, aby dołączyć biblioteki Java do przestrzeni nazw, aby zapewnić łatwy dostęp do klas i metod.

Poniższy przykład pokazuje, jak możemy użyć polecenia importu. W przykładzie używamy polecenia import, aby zaimportować klasy z plikujava.util.stackbiblioteka. Następnie możemy użyć metody push i pop klasy stosu w takiej postaci, w jakiej są.

Przykład

(ns Project
   (:gen-class))
(import java.util.Stack)
(defn Example []
   (let [stack (Stack.)]
   (.push stack "First Element")
   (.push stack "Second Element")
   (println (first stack))))
(Example)

Powyższy program generuje następujące dane wyjściowe.

Wynik

First Element

Uruchamianie kodu za pomocą polecenia Java

Kod Clojure można uruchomić za pomocą polecenia Java. Poniżej znajduje się składnia pokazująca, jak można to zrobić.

java -jar clojure-1.2.0.jar -i main.clj

Musisz wspomnieć o pliku jar Clojure, aby wszystkie klasy oparte na Clojure zostały załadowane do JVM. Plik „main.clj” jest plikiem kodu Clojure, który należy wykonać.

Wbudowane funkcje Java

Clojure może korzystać z wielu wbudowanych funkcji języka Java. Niektóre z nich to -

Math PI function- Clojure może użyć metody Math do wartości PI. Poniżej znajduje się przykładowy kod.

Przykład

(ns Project
   (:gen-class))
(defn Example []
   (println (. Math PI)))
(Example)

Powyższy kod daje następujące dane wyjściowe.

Wynik

3.141592653589793

System Properties- Clojure może również sprawdzać właściwości systemu. Poniżej znajduje się przykładowy kod.

Przykład

(ns Project
   (:gen-class))
(defn Example []
   (println (.. System getProperties (get "java.version"))))
(Example)

W zależności od wersji oprogramowania Java w systemie zostanie wyświetlona odpowiednia wartość. Poniżej przedstawiono przykładowe dane wyjściowe.

Wynik

1.8.0_45