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

تعيين اسم الفئة

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

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

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

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

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

يتكون كل اسم وسيطة من "مع" بالإضافة إلى نوعها. يبدو هذا قبيحًا إلى حد ما، ولكنه يضمن استدعاء الطريقة نفسها دائمًا في الهدف ج كما هو الحال مع جافا.

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

ومع ذلك، لم يتم تعيين أسماء ملفات العناوين، ولكن بدلاً من ذلك يتم تعيين مسار ملف مصدر جافا إلى ".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];