Odczytywanie wygenerowanych źródeł

Mapowanie nazwy zajęć

Ponieważ J2ObjC tłumaczy tylko klasy Java nieobsługujące interfejsu użytkownika, aplikacja na iOS musi współpracować bezpośrednio przetłumaczonych lekcji. Przetłumaczone klasy są standardowymi klasami Objective-C z dostępem do obiektu NSObject, ale pomaga zrozumieć sposób konwertowania nazw klas, metod, parametrów i plików nagłówka.

Java używa pakietów do definiowania przestrzeni nazw, natomiast Objective-C nie ma pakietów i zamiast tego używa konwencji umieszczania wspólnego prefiksu przed powiązanymi klasami (np. NSObject i NSString). Do zachować przestrzenie nazw Java, nazwy pakietów są mapowane na prefiks wielbłąda. Przykład: Pole java.util.List jest domyślnie mapowane na wartość JavaUtilList. Ten domyślny prefiks można ustawić wprost przy użyciu opcji prefiksu pakietu j2objc.

Nazwy parametrów

Java odróżnia przeciążone metody według typów argumentów, natomiast w Objective-C używa się argumentów nazw. J2ObjC tworzy więc nazwy argumentów na podstawie ich typów. Oto jak na przykład jest wstawiony na początku obiektu ArrayList, gdzie lista jest następnie dodawana do kolejnej lista:

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

Nazwa każdego argumentu składa się ze słowa „with” i jego typ. To trochę nieprzyjemne, ale masz pewność, że tak samo jest zawsze wywoływana w Objective-C, tak jak w Javie.

Nazwy nagłówków

Pliki nagłówka nie mają jednak zmapowanych nazw, ale zamiast tego mają ścieżkę źródłowego pliku w Javie kończąca się na „.h” zamiast „.java”. Dzięki temu narzędzia pomocnicze, takie jak Xcode i Maker, ale na pierwszy rzut oka może być niejasne, ponieważ:

#import "java/util/Date.h"

deklaruje klasę JavaUtilDate, a nie Date.

Korzystanie z tłumaczonych klas

Inne niż nieparzyste nazwy (które można uprościć za pomocą prefiksów pakietu) Przetłumaczone klasy są używane tak samo jak inne klasy Objective-C:

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