การแมปชื่อชั้นเรียน
เนื่องจาก J2ObjC จะแปลเฉพาะคลาส Java ที่ไม่ใช่ UI เท่านั้น แอปพลิเคชัน iOS จึงต้องทํางานกับคลาสที่ผ่านการแปลโดยตรง คลาสที่แปลเป็นคลาส Objective-C ที่รูท NSObject เป็นประจํา แต่จะช่วยให้เข้าใจวิธีแปลงชื่อไฟล์คลาส เมธอด พารามิเตอร์ และส่วนหัว
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 และทําสิ่งต่างๆ ได้ง่ายขึ้นมาก แต่อาจทําให้สับสนเล็กน้อยในตอนแรกได้ เนื่องจาก
#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];