Đọc nguồn đã tạo

Liên kết tên lớp

Vì J2ObjC chỉ dịch các lớp Java không phải giao diện người dùng, nên ứng dụng iOS cần làm việc trực tiếp với các lớp được dịch. Các lớp được dịch là các lớp Objective-C gốc do NSObject thông thường, nhưng sẽ giúp bạn hiểu cách chuyển đổi tên lớp, phương thức, tham số và tên tệp tiêu đề.

Java sử dụng gói để xác định không gian tên, trong khi Objective-C không có gói và thay vào đó, có quy ước đặt tiền tố chung trước các lớp có liên quan (như NSObject và NSString). Để giữ nguyên vùng chứa tên Java, tên gói được liên kết tới tiền tố kiểu lạc đà. Ví dụ: java.util.List được liên kết theo mặc định đối với JavaUtilList. Bạn có thể đặt tiền tố mặc định này một cách rõ ràng bằng cách sử dụng các tuỳ chọn tiền tố gói của j2objc.

Tên thông số

Java phân biệt các phương thức nạp chồng theo loại đối số, trong khi Objective-C sử dụng tên đối số. Do đó, J2ObjC tạo tên đối số từ loại. Ví dụ: dưới đây là cách chèn một đối tượng vào đầu ArrayList và cách danh sách đó được thêm vào một danh sách khác:

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

Mỗi tên đối số bao gồm "with" cùng với loại. Điều này hơi xấu, nhưng đảm bảo rằng cùng một phương thức luôn được gọi trong Objective-C như trong Java.

Tên tiêu đề

Tuy nhiên, các tệp tiêu đề không có tên trong bản đồ, nhưng thay vào đó sẽ có đường dẫn tệp nguồn Java kết thúc bằng ".h" thay vì ".java". Điều này giúp các công cụ hỗ trợ như Xcode và Make dễ dàng hơn nhiều, nhưng có thể hơi khó hiểu lúc đầu, vì:

#import "java/util/Date.h"

khai báo lớp JavaUtilDate chứ không phải Date.

Sử dụng lớp học đã dịch

Ngoài các tên lẻ (có thể đơn giản hoá bằng tiền tố gói), các lớp được dịch sẽ được sử dụng như bất kỳ lớp Objective-C nào khác:

#import "java/util/BitSet.h"
...
  JavaUtilBitSet *bitset = [[JavaUtilBitSet alloc] init];
  [bitset setWithInt:10 withBOOL:YES];
  BOOL b = [bitset getWithInt:10];