উৎপন্ন উৎস পড়া

ক্লাসের নাম ম্যাপিং

যেহেতু J2ObjC শুধুমাত্র নন-ইউআই জাভা ক্লাস অনুবাদ করে, তাই একটি iOS অ্যাপ্লিকেশনকে সরাসরি অনুবাদ করা ক্লাসের সাথে কাজ করতে হবে। অনুবাদিত ক্লাসগুলি হল নিয়মিত NSObject-rooted Objective-C ক্লাস, কিন্তু এটি কীভাবে ক্লাস, পদ্ধতি, প্যারামিটার এবং হেডার ফাইলের নাম রূপান্তরিত হয় তা বুঝতে সাহায্য করে।

জাভা নামস্থান সংজ্ঞায়িত করার জন্য প্যাকেজগুলি ব্যবহার করে, যখন অবজেক্টিভ-সি-তে প্যাকেজ নেই এবং এর পরিবর্তে সম্পর্কিত ক্লাসের (যেমন NSObject এবং NSString) সামনে একটি ভাগ করা উপসর্গ রাখার একটি নিয়ম রয়েছে। জাভা নেমস্পেস সংরক্ষণ করতে, প্যাকেজের নামগুলি একটি উট-কেসযুক্ত উপসর্গে ম্যাপ করা হয়। উদাহরণস্বরূপ, java.util.List ডিফল্টরূপে JavaUtilList এ ম্যাপ করা হয়। এই ডিফল্ট উপসর্গটি j2objc এর প্যাকেজ উপসর্গ বিকল্পগুলি ব্যবহার করে স্পষ্টভাবে সেট করা যেতে পারে।

পরামিতি নাম

জাভা তাদের আর্গুমেন্টের ধরন দ্বারা ওভারলোড করা পদ্ধতিকে আলাদা করে, যখন অবজেক্টিভ-সি আর্গুমেন্টের নাম ব্যবহার করে। J2ObjC তাই তাদের প্রকার থেকে আর্গুমেন্ট নাম তৈরি করে। উদাহরণস্বরূপ, এখানে একটি ArrayList এর শুরুতে কীভাবে একটি বস্তু সন্নিবেশ করা হয় এবং কীভাবে সেই তালিকাটি অন্য তালিকায় যুক্ত করা হয় তা এখানে রয়েছে:

[someList addWithInt:0 withId:object];
[otherList addAllWithJavaUtilCollection:somelist];

প্রতিটি আর্গুমেন্টের নাম "সহ" প্লাস এর প্রকার নিয়ে গঠিত। এটি কিছুটা কুৎসিত, তবে নিশ্চিত করে যে একই পদ্ধতিটি সর্বদা অবজেক্টিভ-সি-তে ব্যবহার করা হয় যেমনটি জাভাতে ছিল।

হেডারের নাম

হেডার ফাইলে তাদের নাম ম্যাপ করা হয় না, তবে এর পরিবর্তে জাভা সোর্স ফাইলের পাথ ".java" এর পরিবর্তে ".h" দিয়ে শেষ হয়। এটি Xcode এবং Make করার মত সহায়ক সরঞ্জামগুলিকে অনেক সহজ করে তোলে, কিন্তু প্রথমে একটু বিভ্রান্তিকর হতে পারে, যেহেতু:

#import "java/util/Date.h"

JavaUtilDate ক্লাস ঘোষণা করে, Date নয়।

অনূদিত ক্লাস ব্যবহার করে

বিজোড় নাম ব্যতীত (যা প্যাকেজ উপসর্গ দিয়ে সরলীকৃত করা যেতে পারে), অনুবাদিত ক্লাসগুলি অন্য যেকোন অবজেক্টিভ-সি ক্লাসের মতো ব্যবহার করা হয়:

#import "java/util/BitSet.h"
...
  JavaUtilBitSet *bitset = [[JavaUtilBitSet alloc] init];
  [bitset setWithInt:10 withBOOL:YES];
  BOOL b = [bitset getWithInt:10];