Sınıf adı eşlemesi
J2ObjC yalnızca kullanıcı arayüzü olmayan Java sınıflarını çevirdiğinden, bir iOS uygulamasının çevrilmiş sınıflarla doğrudan çalışması gerekir. Çevrilmiş sınıflar normal NSObject köklü Objective-C sınıflarıdır ancak sınıfın, yöntemin, parametrenin ve başlık dosyası adlarının nasıl dönüştürüldüğünü anlamaya yardımcı olur.
Java, ad alanlarını tanımlamak için paketleri kullanır. Objective-C'de ise bir paket bulunmaz ve bunun yerine ilgili sınıfların (ör. NSObject ve NSString) önüne paylaşılan ön ek getirilir. Java ad alanlarını korumak için paket adları, develerle başlayan bir ön ekle eşleştirilir. Örneğin, java.util.List
varsayılan olarak JavaUtilList
ile eşlenir. Bu varsayılan ön ek, j2objc'in paket ön eki seçenekleri kullanılarak açık bir şekilde ayarlanabilir.
Parametre adları
Java, aşırı yüklenen yöntemleri bağımsız değişken türlerine göre ayırt ederken Objective-C bağımsız değişken adlarını kullanır. Bu nedenle J2ObjC, türlerinden bağımsız değişken adları oluşturur. Örneğin, bir ArrayList
öğesinin başına nasıl nesne eklendiğini ve bu listenin başka bir listeye nasıl eklendiğini görebilirsiniz:
[someList addWithInt:0 withId:object];
[otherList addAllWithJavaUtilCollection:somelist];
Her bağımsız değişken adı "with" ve türünden oluşur. Bu alışılmadık bir şey olsa da Java ile aynı şekilde Objective-C'de aynı yöntemin çağrılmasını sağlar.
Başlık adları
Ancak başlık dosyalarının adları eşlenmez ancak bunun yerine ".java" yerine ".h" ile biten Java kaynak dosya yolu olur. Xcode ve Make gibi destek araçları çok daha kolay hale gelir, ancak ilk etapta biraz kafa karıştırıcı olabilir çünkü:
#import "java/util/Date.h"
Date
öğesini değil JavaUtilDate
sınıfını belirtir.
Çevrilmiş sınıfları kullanma
Çevrilmiş adlar (paket önekleriyle basitleştirilebilir) dışında, çevrilmiş sınıflar diğer tüm Hedef C sınıfları gibi kullanılır:
#import "java/util/BitSet.h"
...
JavaUtilBitSet *bitset = [[JavaUtilBitSet alloc] init];
[bitset setWithInt:10 withBOOL:YES];
BOOL b = [bitset getWithInt:10];