قراءة المصادر المنشأة

ربط اسم الصف

نظرًا لأن J2ObjC لا يترجم سوى فئات Java التي لا تستخدم واجهة المستخدم، فإن تطبيق iOS يحتاج إلى العمل مباشرةً مع الصفوف المترجمة. الفئات المترجمة هي فئات NSObject ذات جذر عادي من خلال NSObject الجذر، لكنها يساعد في فهم كيفية تحويل أسماء ملفات العناوين والطريقة والمعلمات والعناوين.

تستخدم Java حزم لتحديد مساحات الاسم، بينما لا يحتوي Objective-C على حزم وبدلاً من ذلك اصطلاح وضع بادئة مشتركة أمام الفئات ذات الصلة (مثل NSObject وNSString). إلى الاحتفاظ بمساحات أسماء Java، يتم تعيين أسماء الحزم إلى بادئة بها أحرف جملة. على سبيل المثال: يتم تعيين java.util.List تلقائيًا إلى JavaUtilList. يمكن ضبط هذه البادئة التلقائية بشكل صريح باستخدام خيارات بادئة الحزمة في j2objc.

أسماء المَعلمات

يميز Java بين الطرق التي تم تحميلها بشكل زائد حسب أنواع الوسيطة الخاصة بها، بينما يستخدم Objective-C الوسيطة. الأسماء. لذلك، تنشئ J2ObjC أسماء الوسيطات من أنواعها. على سبيل المثال، إليك كيف يمكن يتم إدراج كائن في بداية ArrayList، ثم تتم إضافة هذه القائمة إلى قائمة أخرى :list

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

يتكون اسم كل وسيطة من "with" بالإضافة إلى نوعه. هذا أمر قبيح بعض الشيء، لكنه يضمن نفس دائمًا في لغة Objective-C كما كان الحال مع Java.

أسماء العناوين

لم يتم ربط أسماء ملفات العناوين، ولكن بدلاً من ذلك، تتضمّن مسار الملف المصدر بلغة Java. تنتهي بـ "h." بدلاً من " .java". وهذا يجعل الأدوات الداعمة مثل Xcode وجعل قد تكون مُحيرة بعض الشيء في البداية، لأنّ:

#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];