क्लोजर - जावा इंटरफ़ेस

जैसा कि हम पहले से ही जानते हैं, क्लोजर कोड जावा वर्चुअल वातावरण पर अंत में चलता है। इस प्रकार यह केवल समझ में आता है कि क्लजुरे जावा से सभी कार्यात्मकताओं का उपयोग करने में सक्षम है। इस अध्याय में, आइए क्लोजर और जावा के बीच सहसंबंध पर चर्चा करते हैं।

जावा मेथड्स को कॉल करना

डॉट नोटेशन का उपयोग करके जावा विधियों को बुलाया जा सकता है। एक उदाहरण है तार। चूंकि क्लोजर में सभी तार वैसे भी जावा तार हैं, इसलिए आप स्ट्रिंग पर सामान्य जावा विधियों को कॉल कर सकते हैं।

यह कैसे किया जाता है इस पर एक उदाहरण निम्नलिखित कार्यक्रम में दिखाया गया है।

उदाहरण

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

उपरोक्त कार्यक्रम निम्नलिखित आउटपुट का उत्पादन करता है। आप कोड से देख सकते हैं कि यदि आप किसी भी स्ट्रिंग विधि के लिए सिर्फ डॉट नोटेशन कहते हैं, तो यह क्लॉज्योर में भी काम करेगा।

उत्पादन

HELLO WORLD

पैरामीटर्स के साथ जावा मेथड्स को कॉल करना

आप मापदंडों के साथ जावा विधियों को भी कॉल कर सकते हैं। यह कैसे किया जाता है इस पर एक उदाहरण निम्नलिखित कार्यक्रम में दिखाया गया है।

उदाहरण

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

उपरोक्त कार्यक्रम निम्नलिखित आउटपुट का उत्पादन करता है। आप उपरोक्त कोड से देख सकते हैं, कि हम indexOf मेथड के लिए "e" पैरामीटर पास कर रहे हैं। उपरोक्त कार्यक्रम निम्नलिखित आउटपुट का उत्पादन करता है।

उत्पादन

1

जावा ऑब्जेक्ट बनाना

जावा में जो कुछ भी किया गया है, उसके समान 'नए' कीवर्ड का उपयोग करके क्लोजर में ऑब्जेक्ट बनाए जा सकते हैं।

यह कैसे किया जाता है इस पर एक उदाहरण निम्नलिखित कार्यक्रम में दिखाया गया है।

उदाहरण

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

उपरोक्त कार्यक्रम निम्नलिखित आउटपुट का उत्पादन करता है। आप उपरोक्त कोड से देख सकते हैं, कि हम जावा से मौजूदा स्ट्रिंग क्लास से एक नई वस्तु बनाने के लिए 'नए' कीवर्ड का उपयोग कर सकते हैं। हम ऑब्जेक्ट बनाते समय मान को पास कर सकते हैं, जैसे हम जावा में करते हैं। उपरोक्त कार्यक्रम निम्नलिखित आउटपुट का उत्पादन करता है।

उत्पादन

Hello

निम्नलिखित एक और उदाहरण है जो दिखाता है कि हम कैसे इंटेगर वर्ग की एक वस्तु बना सकते हैं और उनका उपयोग सामान्य क्लोजर कमांड में कर सकते हैं।

उदाहरण

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

उपरोक्त कार्यक्रम निम्नलिखित आउटपुट का उत्पादन करता है।

उत्पादन

3

आयात आदेश

हम जावा लाइब्रेरी को नेमस्पेस में शामिल करने के लिए इंपोर्ट कमांड का भी उपयोग कर सकते हैं ताकि क्लासेस और तरीकों को आसानी से एक्सेस किया जा सके।

निम्न उदाहरण दिखाता है कि हम आयात कमांड का उपयोग कैसे कर सकते हैं। उदाहरण में हम वर्गों से आयात करने के लिए आयात कमांड का उपयोग कर रहे हैंjava.util.stackपुस्तकालय। हम तब स्टैक क्लास के पुश और पॉप विधि का उपयोग कर सकते हैं जैसे वे हैं।

उदाहरण

(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)

उपरोक्त कार्यक्रम निम्नलिखित आउटपुट का उत्पादन करता है।

उत्पादन

First Element

जावा कमांड का उपयोग करके रनिंग कोड

जावा कमांड का उपयोग करके क्लोजर कोड चलाया जा सकता है। निम्नलिखित यह कैसे किया जा सकता है का सिंटैक्स है।

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

आपको क्लोजर जार फाइल का उल्लेख करना होगा, ताकि सभी क्लोजर आधारित कक्षाएं जेवीएम में लोड हो जाएं। 'Main.clj' फाइल क्लोजर कोड फाइल है जिसे निष्पादित करने की आवश्यकता है।

जावा अंतर्निहित कार्य

Clojure जावा के कई अंतर्निहित कार्यों का उपयोग कर सकता है। उनमें से कुछ हैं -

Math PI function- क्लॉजुर पीआई के मूल्य के लिए मैथ विधि का उपयोग कर सकता है। निम्नलिखित एक उदाहरण कोड है।

उदाहरण

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

उपरोक्त कोड निम्नलिखित आउटपुट का उत्पादन करता है।

उत्पादन

3.141592653589793

System Properties- क्लोजर सिस्टम के गुणों को भी क्वेरी कर सकता है। निम्नलिखित एक उदाहरण कोड है।

उदाहरण

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

सिस्टम पर जावा के संस्करण के आधार पर, संबंधित मूल्य प्रदर्शित किया जाएगा। निम्नलिखित एक उदाहरण आउटपुट है।

उत्पादन

1.8.0_45