क्लास के नाम को मैप करना
J2ObjC सिर्फ़ बिना यूज़र इंटरफ़ेस वाली Java क्लास का अनुवाद करता है. इसलिए, iOS ऐप्लिकेशन को सीधे अनुवाद किया गया क्लास. अनुवाद की गई क्लास, सामान्य तौर पर NSObject पर आधारित Objective-C क्लास होती हैं. हालांकि, इससे यह समझने में मदद मिलती है कि क्लास, मेथड, पैरामीटर, और हेडर फ़ाइल के नाम कैसे बदले जाते हैं.
Java, नेमस्पेस तय करने के लिए पैकेज का इस्तेमाल करता है. वहीं, Objective-C में पैकेज नहीं होते. इसके बजाय, उसमें मिलती-जुलती क्लास (जैसे, NSObject और NSString) के सामने एक शेयर किया गया प्रीफ़िक्स डालने का एक तरीका होता है. यहां की यात्रा पर हूं
Java नेमस्पेस को सुरक्षित रखें, पैकेज के नाम ऊंट के केस वाले प्रीफ़िक्स से मैप किए जाते हैं. उदाहरण के लिए,
java.util.List
को डिफ़ॉल्ट रूप से JavaUtilList
पर मैप किया जाता है. इस डिफ़ॉल्ट प्रीफ़िक्स को साफ़ तौर पर सेट किया जा सकता है. इसके लिए, j2objc के पैकेज प्रीफ़िक्स के विकल्प का इस्तेमाल करें.
पैरामीटर के नाम
Java, ओवरलोड किए गए तरीकों को उनके आर्ग्युमेंट टाइप के हिसाब से अलग करता है, जबकि Objective-C, आर्ग्युमेंट के नामों का इस्तेमाल करता है. इसलिए, J2ObjC अपने टाइप से आर्ग्युमेंट के नाम बनाता है. उदाहरण के लिए, यहां बताया गया है कि किसी ऑब्जेक्ट को ArrayList
की शुरुआत में कैसे डाला जाता है और फिर उस सूची को किसी दूसरी सूची में कैसे जोड़ा जाता है:
[someList addWithInt:0 withId:object];
[otherList addAllWithJavaUtilCollection:somelist];
हर आर्ग्युमेंट के नाम में "with" होता है साथ ही उसका प्रकार भी. यह थोड़ा अजीब है, लेकिन इससे यह पक्का होता है कि Objective-C में हमेशा वही तरीका इस्तेमाल किया जाए जो Java में इस्तेमाल किया गया था.
हेडर के नाम
हालांकि, हेडर फ़ाइलों के नाम मैप नहीं किए जाते. इसके बजाय, Java सोर्स फ़ाइल का पाथ ".java" के बजाय ".h" पर खत्म होता है. इससे Xcode और Make जैसे सपोर्ट करने वाले टूल बहुत आसान हो जाते हैं, लेकिन पहली बार में थोड़ी उलझन हो सकती है, क्योंकि:
#import "java/util/Date.h"
Date
क्लास के बजाय, JavaUtilDate
क्लास का एलान करता है.
अनुवाद की गई क्लास का इस्तेमाल करना
विषम नामों के अलावा (जिन्हें पैकेज प्रीफ़िक्स की मदद से आसान बनाया जा सकता है), अनुवाद की गई क्लास का इस्तेमाल, किसी भी अन्य Objective-C क्लास की तरह किया जाता है:
#import "java/util/BitSet.h"
...
JavaUtilBitSet *bitset = [[JavaUtilBitSet alloc] init];
[bitset setWithInt:10 withBOOL:YES];
BOOL b = [bitset getWithInt:10];