Odczytywanie wygenerowanych źródeł

Mapowanie nazw klas

J2ObjC tłumaczy tylko Javy bez interfejsu UI, dlatego aplikacja na iOS musi bezpośrednio obsługiwać przetłumaczone klasy. Przetłumaczone klasy są standardowymi klasami Goal-C klasy głównej, ale pomagają zrozumieć, jak nazwy klas, metod, parametrów i plików nagłówka są konwertowane.

Java używa pakietów do definiowania przestrzeni nazw, a cel-C nie ma pakietów i zamiast tego stosuje standardowy prefiks przed powiązanymi klasami (takimi jak NSObject czy NSString). Aby zachować przestrzenie nazw Java, nazwy pakietów są mapowane na prefiksy wielbłądy. Na przykład reguła java.util.List jest domyślnie mapowana na JavaUtilList. Domyślny prefiks można ustawić za pomocą opcji prefiksu pakietu j2objc.

Nazwy parametrów

Java odróżnia metody przeciążone od ich typów argumentów, a Goal-C używa nazw argumentów. Dlatego J2ObjC tworzy nazwy argumentów na podstawie ich typów. Oto przykład wstawienia obiektu na początku obiektu ArrayList i dodawania tej listy do innej listy:

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

Każda nazwa argumentu składa się z ciągu „z” oraz typu. Jest to trochę brzydkie, ale zapewnia, że ta sama metoda jest zawsze wywoływana w celu C – podobnie jak w przypadku Javy.

Nazwy nagłówków

Pliki nagłówków nie są zmapowane, ale mają ścieżkę pliku Java kończącą się na „.h” zamiast „.java”. Ułatwia to obsługę takich narzędzi jak Xcode i Make Make, ale może być początkowo niejasne, ponieważ:

#import "java/util/Date.h"

deklaruje klasę JavaUtilDate, a nie Date.

Korzystanie z przetłumaczonych zajęć

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

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