Generierte Quellen lesen

Zuordnung des Klassennamens

Da J2ObjC nur Nicht-UI-Java-Klassen übersetzt, muss eine iOS-Anwendung direkt mit dem übersetzte Kurse. Übersetzte Klassen sind reguläre, vom NSObject gerootete Objective-C-Klassen. hilft zu verstehen, wie Klassen-, Methoden-, Parameter- und Header-Dateinamen konvertiert werden.

Java verwendet Pakete, um Namespaces zu definieren, während Objective-C über keine Pakete verfügt, sondern über einen Konvention, um ein gemeinsames Präfix vor verwandten Klassen (wie NSObject und NSString) zu stellen. Bis Java-Namespaces beibehalten werden, werden Paketnamen einem Präfix in der Camel-Case-Schreibweise zugeordnet. Beispiel: java.util.List wird standardmäßig JavaUtilList zugeordnet. Dieses Standardpräfix kann explizit festgelegt werden mithilfe der Paketpräfixoptionen von j2objc.

Parameternamen

Java unterscheidet überladene Methoden anhand ihrer Argumenttypen, während Objective-C das Argument Namen. J2ObjC erstellt daher Argumentnamen aus ihren Typen. Hier sehen Sie zum Beispiel, wie ein am Anfang eines ArrayList eingefügt und wie diese Liste dann einem anderen Liste:

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

Jeder Argumentname besteht aus "with" plus Typ. Das ist etwas unschön, aber es wird sichergestellt, wird in Objective-C immer wie in Java aufgerufen.

Headernamen

Den Header-Dateien sind jedoch nicht die Namen, sondern der Pfad der Java-Quelldatei zugeordnet. mit der Endung „.h“ statt ".java". Unterstützende Tools wie Xcode und Make werden dadurch viel einfacher. kann aber anfangs etwas verwirrend sein, denn:

#import "java/util/Date.h"

deklariert die Klasse JavaUtilDate, nicht Date.

Übersetzte Kurse verwenden

Mit Ausnahme der Namen, die mit Paketpräfixen vereinfacht werden können, übersetzte Klassen wie jede andere Objective-C-Klasse verwendet werden:

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