讀取產生的來源資料

類別名稱對應

由於 J2ObjC 只會翻譯非 UI Java 類別,因此 iOS 應用程式必須直接處理翻譯後的類別。翻譯後的類別是一般 NSObject 根層級 Objective-C 類別,但可協助瞭解類別、方法、參數和標頭檔案名稱的轉換方式。

Java 使用套件來定義命名空間,而 Objective-C 沒有套件,而是在相關類別 (例如 NSObject 和 NSString) 前面加上共用前置字串。為了保留 Java 命名空間,套件名稱會對應至駝峰式大小寫。例如,java.util.List 預設對應至 JavaUtilList。您可以使用 j2objc 的套件前置字串選項明確設定這個預設前置字串。

參數名稱

Java 會根據引數類型區分超載方法,Objective-C 會使用引數名稱。因此,J2ObjC 會為其類型建立引數名稱。例如,以下是將物件插入 ArrayList 開頭的方法,以及如何將清單新增至其他清單:

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

每個引數名稱包含「with」及其類型。這有點難度,但能確保在 Objective-C 中一律以 Java 的方式叫用相同的方法。

標頭名稱

但是標頭標頭沒有對應的名稱,而是將 Java 來源檔案路徑的結尾為「.h」而非「.java」。這可讓 Xcode 和 Make 等支援工具變得更加簡單,但一開始可能會有些許混淆,原因如下:

#import "java/util/Date.h"

宣告 JavaUtilDate 類別,而不是 Date

使用已翻譯的課程

除了奇數名稱 (可使用套件前置字串簡化) 之外,翻譯類別與其他 Objective-C 類別一樣使用:

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