Lettura delle origini generate

Mappatura del nome del corso

Poiché J2ObjC traduce solo le classi Java non UI, un'applicazione iOS deve lavorare direttamente con le classi tradotte. Le classi tradotte sono normali classi Objective-C con root NSObject, ma è utile per comprendere in che modo vengono convertiti i nomi di classe, metodo, parametro e intestazione.

Java utilizza i pacchetti per definire gli spazi dei nomi, mentre Objective-C non ha pacchetti e prevede invece di convenire di inserire un prefisso condiviso prima delle classi correlate (come NSObject e NSString). Per conservare gli spazi dei nomi Java, i nomi dei pacchetti sono mappati a un prefisso con le maiuscole nel cammello. Ad esempio, java.util.List è mappato per impostazione predefinita a JavaUtilList. Questo prefisso predefinito può essere impostato in modo esplicito utilizzando le opzioni dei prefissi pacchetto di j2objc.

Nomi dei parametri

Java differenzia i metodi sovraccaricati in base ai relativi tipi di argomento, mentre Objective-C utilizza i nomi degli argomenti. J2ObjC crea quindi nomi di argomenti dai loro tipi. Ad esempio, ecco come viene inserito un oggetto all'inizio di ArrayList e come viene aggiunto a un altro elenco:

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

Ogni nome di argomento è costituito da "with" e dal relativo tipo. Questo è un po' brutto, ma garantisce che lo stesso metodo venga sempre richiamato in Objective-C come con Java.

Nomi delle intestazioni

Tuttavia, i nomi dei file delle intestazioni non vengono mappati, ma il percorso del file di origine Java termina con ".h" anziché con ".java". Ciò rende molto più semplice il supporto di strumenti come Xcode e Make, ma può essere fonte di confusione iniziale, poiché

#import "java/util/Date.h"

dichiara la classe JavaUtilDate, non Date.

Utilizzo dei corsi tradotti

A parte i nomi dispari (che possono essere semplificati con i prefissi pacchetto), le classi tradotte vengono utilizzate come qualsiasi altra classe Objective-C:

#import "java/util/BitSet.h"
...
  JavaUtilBitSet *bitset = [[JavaUtilBitSet alloc] init];
  [bitset setWithInt:10 withBOOL:YES];
  BOOL b = [bitset getWithInt:10];