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];