메서드 이름 변경

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:

왼쪽 선언은 자바 가상 머신 사양에 정의된 전체 메서드 서명입니다. 오른쪽 정의는 iOS 선택기 (즉, @selector()에 전달할 항목)로 구성됩니다. 메서드와 매핑의 매개변수 수는 동일해야 합니다.

또 다른 예로, 이 줄은 이전 섹션의 예와 같습니다.

pkg.ClassName.setTime(III)V = setTimeWithHours:minutes:seconds:

추가 매핑 파일은 명령줄에서 --mapping 옵션을 사용하여 지정할 수 있습니다.