如何指定套件名稱的前置字串。

名稱對應

Java 使用套件以非正式的方式定義命名空間;Objective C++ 含有 C++ 命名空間 C 目標 C 不會。如要在使用多個套件中的類別時保留名稱不重複性, J2ObjC 會在類型名稱中加上駝峰式大小寫版本的套件。例如: java.util.Map 已重新命名為 JavaUtilMap

遺憾的是,如果使用駝峰式大小寫的套件名稱,產生的程式碼會變得難以閱讀, 名稱較長例如 Google Guava Beta 版註解 位於 com.google.common.annotations 套件中,ComGoogleCommonAnnotationsBeta 不易 讀取超過 Beta 次。

定義套件前置字串

Objective-C 非正式命名空間的定義方式是使用共用的前置字元,通常是兩個 大寫字母。iOS 基礎架構使用「NS」(來自 NeXTStep)。簡化 Google Guava 的 Beta 版功能 名稱,前置字串,例如「GG」將 Beta 稱為 GGBeta,可提高可讀性。

J2ObjC 支援開發人員指定自己的前置字串,以便對應至套件名稱。這項作業是在 使用 --prefix package=prefix 建立指令列如要縮短 Beta的套件,「--prefix com.google.common.annotations=GG」。獨立的 每個套件都需要前置宣告。

為多個套件定義單一前置字串

較小的程式庫通常使用不會衝突的 Java 類別名稱,因此可以共用一個前置字元 替換為萬用字元的套件規格例如,所有 Joda-Time 套件可使用 --prefix 'org.joda.time.*=JT' 共用相同的 JT 前置字串。唯一支援的萬用字元是「*」,與 指令列殼層會使用檔案名稱。

定義多個套件前置字串

如要簡化指定多個前置字串定義的程序,您可以使用屬性檔案與 「--prefixes 檔案」引數:

cat prefixes.properties
com.google.common.annotations: GG
com.google.common.base: GG

# While GG can be used for all packages, let's mix it up.
com.google.common.collect: GC
com.google.common.io: GIO        # A prefix can be more than two characters,
com.google.common.net: GuavaNet  # a lot more!
...
j2objc --prefixes prefixes.properties <args>

執行階段中的前置字串類別

由於完成的應用程式中有具有前置字串的類別,因此無法使用原始的 Java 尋找這些類別 類別名稱。但如果應用程式的資源中有名為 prefixes.properties 的檔案, 如果軟體包含有要翻譯的前置字串,Class.forName(javaName) 就會找到對應的類別。

如要在 Xcode 中將上述 prefixes.properties 新增至 iOS 應用程式,請開啟建構目標的建構階段 分頁,展開其「Copy Bundle Resources」部分,然後在該清單中新增 prefixes.propertiesJava 資源進一步說明 Java 資源概念與 iOS 的對應方式 再複習一下,機構節點 是所有 Google Cloud Platform 資源的根節點