প্যাকেজ নামের জন্য উপসর্গ কিভাবে নির্দিষ্ট করবেন।

নাম ম্যাপিং

জাভা প্যাকেজ ব্যবহার করে অনানুষ্ঠানিকভাবে নামস্থান সংজ্ঞায়িত করতে; যখন অবজেক্টিভ C++ এর C++ নামস্থান আছে, উদ্দেশ্য C এর নেই। একাধিক প্যাকেজ থেকে ক্লাস ব্যবহার করার সময় নামের স্বতন্ত্রতা রক্ষা করার জন্য, J2ObjC প্যাকেজের একটি উট-কেসড সংস্করণ টাইপ নামের সাথে যুক্ত করে। উদাহরণস্বরূপ, java.util.Map নাম পরিবর্তন করে JavaUtilMap করা হয়েছে।

দুর্ভাগ্যবশত, ক্যামেল-কেসড প্যাকেজ নাম জেনারেট করা কোডের পঠনযোগ্যতা কমাতে পারে, বিশেষ করে লম্বা প্যাকেজ নামের সাথে। উদাহরণস্বরূপ, Google Guava-এর বিটা টীকা com.google.common.annotations প্যাকেজে রয়েছে এবং ComGoogleCommonAnnotationsBeta Beta থেকে পড়া কঠিন।

একটি প্যাকেজ উপসর্গ সংজ্ঞায়িত করা

অনানুষ্ঠানিক নামস্থান সংজ্ঞায়িত করার জন্য উদ্দেশ্য-সি কনভেনশন হল একটি ভাগ করা উপসর্গ ব্যবহার করা, সাধারণত দুটি বড় হাতের অক্ষর। iOS ফাউন্ডেশন ফ্রেমওয়ার্ক "NS" ব্যবহার করে ( NEXTStep থেকে), উদাহরণস্বরূপ। Google Guava-এর বিটা নামকে সহজ করার জন্য, একটি উপসর্গ যেমন "GG" Beta GGBeta হিসাবে উল্লেখ করে পাঠযোগ্যতা উন্নত করবে।

J2ObjC ডেভেলপারদের প্যাকেজের নামের ম্যাপ করতে তাদের নিজস্ব উপসর্গ নির্দিষ্ট করে সমর্থন করে। এটি কমান্ড লাইনে --prefix package = prefix ব্যবহার করে করা হয়। Beta -এর প্যাকেজের সমস্ত শ্রেণির নাম ছোট করতে, " --prefix com.google.common.annotations=GG "" ব্যবহার করা হবে৷ প্রতিটি প্যাকেজের জন্য একটি পৃথক প্রিফিক্স ঘোষণা প্রয়োজন৷

একাধিক প্যাকেজের জন্য একটি একক উপসর্গ সংজ্ঞায়িত করা

ছোট লাইব্রেরিতে প্রায়ই জাভা ক্লাসের নাম থাকে যা বিরোধিতা করে না এবং তাই ওয়াইল্ডকার্ডযুক্ত প্যাকেজ স্পেসিফিকেশনের সাথে একটি একক উপসর্গ ভাগ করতে পারে। উদাহরণস্বরূপ, সমস্ত Joda-Time প্যাকেজ একই JT উপসর্গ শেয়ার করতে পারে, --prefix 'org.joda.time.*=JT' ব্যবহার করে। শুধুমাত্র ওয়াইল্ডকার্ড ক্যারেক্টারটি '*' সমর্থিত, যা কমান্ড-লাইন শেল ফাইলের নামের সাথে একইভাবে মেলে।

একাধিক প্যাকেজ উপসর্গ সংজ্ঞায়িত করা

বেশ কয়েকটি উপসর্গ সংজ্ঞা উল্লেখ করা সহজ করার জন্য, একটি বৈশিষ্ট্য ফাইল " --prefixes ফাইল " আর্গুমেন্টের সাথে ব্যবহার করা যেতে পারে:

cat prefixes.properties
com.google.common.annotations: GG
com.google.common.base: GG

# While GG can be used for all packages, let's mix it up.
com.google.common.collect: GC
com.google.common.io: GIO        # A prefix can be more than two characters,
com.google.common.net: GuavaNet  # a lot more!
...
j2objc --prefixes prefixes.properties <args>

রানটাইমে প্রিফিক্সড ক্লাস

যেহেতু সমাপ্ত অ্যাপটিতে উপসর্গ সহ ক্লাস রয়েছে, সেগুলি ডিফল্টরূপে আসল জাভা ক্লাস নাম ব্যবহার করে সনাক্ত করা যাবে না। যাইহোক, অ্যাপটির রিসোর্স বান্ডেলে prefixes.properties নামের একটি ফাইল থাকলে অনুবাদের জন্য ব্যবহৃত প্রিফিক্স সহ, Class.forName(javaName) ম্যাপ করা ক্লাস খুঁজে পাবে।

Xcode-এ একটি iOS অ্যাপে উপরের উপসর্গগুলি যোগ করতে, বিল্ড টার্গেটের বিল্ড ফেজ ট্যাবটি খুলুন, এর কপি বান্ডেল রিসোর্সেস বিভাগটি প্রসারিত করুন এবং সেই তালিকায় প্রিফিক্সেস.প্রপার্টিজ ফাইল যোগ করুন। জাভা রিসোর্স আইওএস রিসোর্সে কিভাবে জাভা রিসোর্স কনসেপ্ট ম্যাপ করে সে সম্পর্কে আরও তথ্য আছে।