מקורות קריאה

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

מכיוון ש-J2ObjC מתרגם רק מחלקות Java שאינן ממשקי משתמש, אפליקציה ל-iOS צריכה לפעול ישירות עם הכיתות המתורגמות. מחלקות מתורגמות הן מחלקות יעדים-C שמקורן ב-NSObject, אך הן עוזרות להבין איך מתבצעת המרה של שמות מחלקות, שיטות, פרמטרים וקובצי כותרות.

ב-Java נעשה שימוש בחבילות להגדרת מרחבי שמות, ואילו ב-Destination-C אין חבילות, ובמקום זאת יש קידומת משותפת לפני מחלקות קשורות (כמו NSObject ו-NSString). כדי לשמר מרחבי שמות של Java, שמות חבילות ממופים לקידומת באותיות גמל. לדוגמה, java.util.List ממופה כברירת מחדל ל-JavaUtilList. אפשר להגדיר את קידומת ברירת המחדל הזו במפורש באמצעות אפשרויות קידומת החבילה של j2objc.

שמות פרמטרים

Java מבדיל בין שיטות עמוסות לפי סוגי הארגומנטים, בעוד ש-Target-C משתמש בשמות הארגומנטים. לכן J2ObjC יוצר שמות ארגומנטים מסוגיהם. לדוגמה, כך מוסיפים אובייקט לתחילת ArrayList, ואיך הרשימה מתווספת לרשימה אחרת:

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

כל שם ארגומנט מורכב מ-"with" עם הסוג שלו. זה אולי קצת מכוער, אבל מבטיח שאותה שיטה תמיד תופעל ב-Destination-C כמו ב-Java.

שמות הכותרות

עם זאת, לכותרות אין מיפוי של השמות שלהן, אלא נתיב הנתיב של מקור ה-Java שמסתיים ב-h. במקום .java. זה מקל על כלים תומכים כמו 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];