クラス名のマッピング
J2ObjC は UI 以外の Java クラスのみを変換するため、iOS アプリケーションは 表示されます。変換されたクラスは、通常の NSObject ルート Objective-C クラスですが、 クラス、メソッド、パラメータ、ヘッダーのファイル名がどのように変換されるかを理解するのに役立ちます。
Java はパッケージを使用して名前空間を定義しますが、Objective-C にはパッケージがなく、代わりに
関連するクラス(NSObject や NSString など)の前に共有接頭辞を付ける規則です。宛先
Java 名前空間を保持する場合、パッケージ名はキャメルケース プレフィックスにマッピングされます。たとえば
java.util.List
はデフォルトで JavaUtilList
にマッピングされます。このデフォルトの接頭辞は、Google Cloud
j2objc のパッケージ接頭辞オプションを使用します。
パラメータ名
Java はオーバーロードされたメソッドを引数の型で区別しますが、Objective-C では引数
できます。そのため、J2ObjC はその型から引数名を作成します。たとえばこれは
オブジェクトを ArrayList
の先頭に挿入して、そのリストを別のリストにどのように追加するか
list:
[someList addWithInt:0 withId:object];
[otherList addAllWithJavaUtilCollection:somelist];
各引数名は "with" 記号で型を指定します。やや見にくくなりますが、同じことが確実に メソッドは、Java の場合と同じように、常に Objective-C で呼び出されます。
ヘッダー名
ただし、ヘッダー ファイルの名前はマッピングされず、Java ソースファイルのパスがマッピングされます。 末尾が「.h」「.java」と入力します。これにより、Xcode や Make などのサポートツールが 最初は少しわかりにくかったかもしれませんが
#import "java/util/Date.h"
Date
ではなく JavaUtilDate
クラスを宣言している。
変換されたクラスの使用
奇妙な名前(パッケージ プレフィックスで簡略化できる)を除き、 変換されたクラスは、他の Objective-C クラスと同じように使用できます。
#import "java/util/BitSet.h"
...
JavaUtilBitSet *bitset = [[JavaUtilBitSet alloc] init];
[bitset setWithInt:10 withBOOL:YES];
BOOL b = [bitset getWithInt:10];