생성된 소스 읽기

클래스 이름 매핑

J2ObjC는 UI가 아닌 Java 클래스만 변환하므로 iOS 애플리케이션은 알 수 있습니다. 변환된 클래스는 NSObject 기반의 일반적인 Objective-C 클래스이지만 클래스, 메서드, 매개변수 및 헤더 파일 이름이 변환되는 방식을 이해하는 데 도움이 됩니다.

Java는 패키지를 사용하여 네임스페이스를 정의하는 반면 Objective-C에는 패키지가 없으며 대신 NSObject 및 NSString과 같은 관련 클래스 앞에 공유 접두사를 배치하는 규칙을 따릅니다. 받는사람 자바 네임스페이스를 보존하므로 패키지 이름은 카멜 표기법으로 된 접두사에 매핑됩니다. 예를 들어 java.util.List는 기본적으로 JavaUtilList에 매핑됩니다. 이 기본 프리픽스는 j2objc의 패키지 접두사 옵션을 사용해 보세요.

매개변수 이름

Java는 오버로드된 메서드를 인수 유형별로 구분하지만 Objective-C는 인수를 사용합니다. 이름을 지정할 수 있습니다 따라서 J2ObjC는 해당 유형에서 인수 이름을 만듭니다. 예를 들어 객체가 ArrayList의 시작 부분에 삽입되고 이 목록이 다른 대상에 추가되는 방법 list:

[someList addWithInt:0 withId:object];
[otherList addAllWithJavaUtilCollection:somelist];

각 인수 이름은 'with'로 구성됩니다. 표시됩니다. 다소 보기 좋지 않지만 메서드는 Java에서와 마찬가지로 항상 Objective-C에서도 호출됩니다.

헤더 이름

헤더 파일에는 매핑된 이름이 없지만 대신 Java 소스 파일 경로가 있습니다. '.h'로 끝남 '.java' 대신 '.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];