更改方法名称

ObjectiveCName 注解

您可以使用 @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 选项指定其他映射文件。