W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
正如我們已經(jīng)知道的,Clojure代碼最終在Java虛擬環(huán)境上運(yùn)行。 因此,只有Clojure能夠利用Java中的所有功能才有意義。 在本章中,我們來討論Clojure和Java之間的相關(guān)性。
可以使用點(diǎn)表示法調(diào)用Java方法。 一個例子是字符串。 因為Clojure中的所有字符串都是Java字符串,所以你可以在字符串上調(diào)用普通的Java方法。
以下程序中顯示了如何完成此操作的示例。
(ns Project (:gen-class)) (defn Example [] (println (.toUpperCase "Hello World"))) (Example)
上述程序產(chǎn)生以下輸出。 你可以從代碼中看到,如果你只是調(diào)用任何字符串方法的點(diǎn)符號,它也將在Clojure工作。
HELLO WORLD
您還可以使用參數(shù)調(diào)用Java方法。 以下程序中顯示了如何完成此操作的示例。
(ns Project (:gen-class)) (defn Example [] (println (.indexOf "Hello World","e"))) (Example)
上述程序產(chǎn)生以下輸出。 你可以從上面的代碼看到,我們將參數(shù)“e”傳遞給indexOf方法。 上述程序產(chǎn)生以下輸出。
1
對象可以在Clojure中通過使用'new'關(guān)鍵字來創(chuàng)建,類似于在Java中所做的。
以下程序中顯示了如何完成此操作的示例。
(ns Project (:gen-class)) (defn Example [] (def str1 (new String "Hello")) (println str1)) (Example)
上述程序產(chǎn)生以下輸出。 你可以從上面的代碼中看到,我們可以使用'new'關(guān)鍵字從現(xiàn)有的Java類中創(chuàng)建一個新的對象。 我們可以在創(chuàng)建對象時傳遞值,就像我們在Java中一樣。 上述程序產(chǎn)生以下輸出。
Hello
下面是另一個例子,顯示了如何創(chuàng)建一個Integer類的對象,并在正常的Clojure命令中使用它們。
(ns Project (:gen-class)) (defn Example [] (def my-int(new Integer 1)) (println (+ 2 my-int))) (Example)
上述程序產(chǎn)生以下輸出。
3
我們還可以使用import命令將Java庫包含在命名空間中,以便可以輕松地訪問類和方法。
以下示例顯示如何使用import命令。 在示例中,我們使用import命令從java.util.stack庫中導(dǎo)入類。 然后我們可以使用stack類的push和pop方法。
(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)
上述程序產(chǎn)生以下輸出。
First Element
Clojure代碼可以使用Java命令運(yùn)行。 下面是如何做到這一點(diǎn)的語法。
java -jar clojure-1.2.0.jar -i main.clj
你必須提到Clojure jar文件,以便所有基于Clojure的類都將在JVM中加載。 'main.clj'文件是需要執(zhí)行的Clojure代碼文件。
Clojure可以使用Java的許多內(nèi)置函數(shù)。
數(shù)學(xué)PI函數(shù) - Clojure可以使用Math方法來獲取PI的值。 下面是一個示例代碼。
(ns Project (:gen-class)) (defn Example [] (println (. Math PI))) (Example)
上面的代碼產(chǎn)生以下輸出。
3.141592653589793
系統(tǒng)屬性 - Clojure也可以查詢系統(tǒng)屬性。 下面是一個示例代碼。
(ns Project (:gen-class)) (defn Example [] (println (.. System getProperties (get "java.version")))) (Example)
根據(jù)系統(tǒng)上Java的版本,將顯示相應(yīng)的值。 下面是一個示例輸出。
1.8.0_45
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: