メソッド名の変更

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 オプションを使用して追加のマッピング ファイルを指定できます。