Pemetaan nama class
Karena J2ObjC hanya menerjemahkan class Java non-UI, aplikasi iOS perlu bekerja secara langsung dengan class yang diterjemahkan. Class yang diterjemahkan adalah class Objective-C yang di-root NSObject biasa, tetapi akan membantu memahami cara class, metode, parameter, dan nama file header dikonversi.
Java menggunakan paket untuk menentukan namespace, sedangkan Objective-C tidak memiliki paket dan memiliki konvensi untuk menempatkan awalan bersama di depan class terkait (seperti NSObject dan NSString). Untuk
mempertahankan namespace Java, nama paket dipetakan ke awalan camel-case. Misalnya,
java.util.List
dipetakan secara default ke JavaUtilList
. Awalan default ini dapat ditetapkan secara eksplisit menggunakan opsi awalan paket j2objc.
Nama parameter
Java membedakan metode yang kelebihan beban dengan jenis argumennya, sedangkan Objective-C menggunakan nama
argumen. Oleh karena itu, J2ObjC membuat nama argumen dari jenisnya. Misalnya, berikut adalah cara
objek disisipkan ke awal ArrayList
, dan bagaimana daftar tersebut kemudian ditambahkan ke daftar
lain:
[someList addWithInt:0 withId:object];
[otherList addAllWithJavaUtilCollection:somelist];
Setiap nama argumen terdiri dari "dengan" ditambah jenisnya. Ini sedikit tidak baik, tetapi memastikan bahwa metode yang sama selalu dipanggil di Objective-C seperti pada Java.
Nama header
Namun, nama file header tidak dipetakan, melainkan memiliki jalur file sumber Java yang diakhiri dengan ".h" dan bukan ".java". Hal ini membuat alat pendukung seperti Xcode dan Membuatnya jauh lebih mudah, tetapi bisa sedikit membingungkan pada awalnya, karena:
#import "java/util/Date.h"
mendeklarasikan class JavaUtilDate
, bukan Date
.
Menggunakan class yang diterjemahkan
Selain nama ganjil (yang dapat disederhanakan dengan awalan paket), class yang diterjemahkan digunakan seperti class Objective-C lainnya:
#import "java/util/BitSet.h"
...
JavaUtilBitSet *bitset = [[JavaUtilBitSet alloc] init];
[bitset setWithInt:10 withBOOL:YES];
BOOL b = [bitset getWithInt:10];