क्लास के नाम को मैप करना
J2ObjC सिर्फ़ बिना यूज़र इंटरफ़ेस वाली Java क्लास का अनुवाद करता है. इसलिए, iOS ऐप्लिकेशन को सीधे अनुवाद किया गया क्लास है. अनुवाद की गई क्लास, सामान्य NSObject-rooted 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 सोर्स फ़ाइल का पाथ है ".h" से खत्म होता है के बजाय ".java" पर दिखेगा. इससे Xcode और Make जैसे सपोर्ट करने वाले टूल बहुत आसान हो जाते हैं, लेकिन पहली बार में थोड़ी उलझन हो सकती है, क्योंकि:
#import "java/util/Date.h"
JavaUtilDate
क्लास का एलान करता है, न कि Date
.
अनुवाद की गई क्लास का इस्तेमाल करना
विषम नामों के अलावा (जिन्हें पैकेज प्रीफ़िक्स की मदद से आसान बनाया जा सकता है), अनुवाद की गई क्लास का इस्तेमाल, किसी भी दूसरी Objective-C क्लास की तरह किया जाता है:
#import "java/util/BitSet.h"
...
JavaUtilBitSet *bitset = [[JavaUtilBitSet alloc] init];
[bitset setWithInt:10 withBOOL:YES];
BOOL b = [bitset getWithInt:10];