ObjectiveCName アノテーション
任意の Java メソッドに @ObjectiveCName アノテーションを付けると、そのメソッドとオーバーライドするメソッドの変換後の名前を変更できます。例:
@ObjectiveCName("setTimeWithHours:minutes:seconds:")
public void setTime(int hours, int minutes, int seconds) {
...
}
は次のように翻訳されます。
- (void)setTimeWithHours:(jint)hours
minutes:(jint)minutes
seconds:(jint)seconds;
マッピング ファイル
メソッド名は --mapping フラグを使用して変更できます。このフラグは、使用するマッピングを含むプロパティ ファイルを受け取ります。各メソッド マッピングは、キーの完全な Java メソッド シグネチャと Objective-C セレクタ値で定義されます。たとえば、Object.equals() を NSObject.isEqual にマッピングする行は次のようになります。
java.lang.Object.equals(Ljava/lang/Object;)Z = isEqual:
左側の宣言は、Java 仮想マシン仕様で定義されている完全なメソッド シグネチャです。右側の定義は iOS セレクタ(つまり、@selector() に渡すもの)で構成されています。メソッドとそのマッピングには、同じ数のパラメータが必要です。
別の例として、この行は前のセクションの例と同じです。
pkg.ClassName.setTime(III)V = setTimeWithHours:minutes:seconds:
コマンドラインで --mapping オプションを使用して追加のマッピング ファイルを指定できます。