Paket adları için ön ek belirtme.

Ad Eşleme

Java, ad alanlarını resmi olmayan bir şekilde tanımlamak için paketleri kullanır; Objective C++ ise C++ ad alanlarına sahiptir ve C hedefi bunu yapmaz. Birden fazla paketteki sınıfları kullanırken adın benzersizliğini korumak için J2ObjC, tür adının başına paketin deve büyük harf içeren sürümünü ekler. Örneğin, java.util.Map, JavaUtilMap olarak yeniden adlandırıldı.

Maalesef büyük/küçük harf içeren paket adları, özellikle de küçük resim olmak üzere, oluşturulan kodun okunabilirliğini uzun paket adlarına sahip olur. Örneğin, Google Guava'nın Beta ek açıklaması com.google.common.annotations paketinde bulunuyor, ComGoogleCommonAnnotationsBeta ise daha zor Beta oranından daha okuma.

Paket Öneki Tanımlama

Gayri resmî ad alanları tanımlamak için kullanılan Objective-C kuralı, ortak bir önek (genellikle iki) kullanmaktır. büyük harfle başlayın. iOS Foundation Framework "NS" kullanır (kaynak: NeXTStep). Google Guava'nın Beta sürümünü basitleştirmek için ad, "GG" gibi bir önek Beta terimini GGBeta olarak belirterek okunabilirliği artıracaktır.

J2ObjC, geliştiricilerin paket adlarını eşlemek için kendi ön eklerini belirtmesini destekler. Bu işlem komut satırını --prefix package=prefix kullanarak değiştirin. için tüm sınıf adlarını kısaltmak Beta adlı kullanıcının paketi, "--prefix com.google.common.annotations=GG" için kullanılır. Ayrı bir her paket için önek bildirimi gereklidir.

Birden Çok Paket için Tek Bir Önek Tanımlama

Küçük kitaplıklar genellikle çakışmayan Java sınıf adlarına sahiptir ve bu nedenle tek bir ön eki paylaşabilir joker karakterli bir paket spesifikasyonuna sahip olması gerekir. Örneğin, tüm Joda-Time paketleri --prefix 'org.joda.time.*=JT' kullanılarak aynı JT ön ekini paylaşabilir. Desteklenen tek joker karakter olan "*", komut satırı kabuğunun dosya adlarındaki işleyiş şeklidir.

Birden Çok Paket Ön Eki Tanımlama

Birkaç ön ek tanımını belirtmeyi kolaylaştırmak için bir özellikler dosyası "--prefixes dosyası" bağımsız değişken:

cat prefixes.properties
com.google.common.annotations: GG
com.google.common.base: GG

# While GG can be used for all packages, let's mix it up.
com.google.common.collect: GC
com.google.common.io: GIO        # A prefix can be more than two characters,
com.google.common.net: GuavaNet  # a lot more!
...
j2objc --prefixes prefixes.properties <args>

Çalışma Zamanında Önekli Sınıflar

Tamamlanmış uygulamada ön ek içeren sınıflar bulunduğundan, bu sınıflar orijinal Java kullanılarak bulunamaz. varsayılan olarak sınıf adıdır. Ancak, uygulamanın kaynağında prefixes.properties adlı bir dosya varsa önekleri içeren bir paket eklerseniz Class.forName(javaName), eşlenen sınıfı bulur.

Xcode'da bir iOS uygulamasına yukarıdaki prefixes.properties dosyasını eklemek için derleme hedefinin Derleme Aşamalarını açın sekmesinde, Paket Kaynaklarını Kopyala bölümünü genişletin ve prefixes.properties dosyasını bu listeye ekleyin. Java Kaynakları'nda, Java kaynak kavramlarının iOS ile nasıl eşlendiği hakkında daha fazla bilgi bulabilirsiniz kaynaklar.