Lettura delle origini generate

Mappatura dei nomi di classe

Dal momento che J2ObjC traduce solo classi Java non UI, un'applicazione iOS deve funzionare direttamente con corsi tradotti. Le classi tradotte sono classi Objective-C regolari basate su NSObject, ma aiuta a capire come vengono convertiti i nomi dei file di classe, metodo, parametro e intestazione.

Java utilizza i pacchetti per definire gli spazi dei nomi, mentre Objective-C non ha pacchetti, ma ha convenzione per mettere un prefisso condiviso davanti a classi correlate (come NSObject e NSString). A gli spazi dei nomi Java, i nomi dei pacchetti sono mappati a un prefisso con lettere maiuscole e minuscole. Ad esempio: Per impostazione predefinita, java.util.List è mappato a JavaUtilList. Questo prefisso predefinito può essere utilizzando le opzioni prefisso pacchetto di j2objc.

Nomi dei parametri

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

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

Ogni nome di argomento è composto da "with" più il suo tipo. È un po' brutto, ma garantisce che viene sempre richiamato in Objective-C come in Java.

Nomi delle intestazioni

I file di intestazione non hanno il nome mappato, ma il percorso del file di origine Java che termina con ".h" invece di ".java". In questo modo, strumenti di supporto come Xcode e Make molto più semplici, ma può creare un po' di confusione all'inizio, in quanto:

#import "java/util/Date.h"

dichiara la classe JavaUtilDate, non Date.

Utilizzare le classi tradotte

Ad eccezione dei nomi strani (che possono essere semplificati con i prefissi pacchetto), 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];