מקורות קריאה

מיפוי של שם הכיתה

מכיוון ש-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 ו-Maker, אבל יכול להיות קצת מבלבל בהתחלה, כי:

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