Đọ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 một ứng dụng iOS cần làm việc trực tiếp với các lớp đã dịch. Các lớp được dịch là các lớp Target-C gốc NSObject, nhưng nó 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 dùng các gói để xác định không gian tên, trong khi Target-C không có gói và thay vào đó có một quy ước đặt tiền tố dùng chung trước các lớp có liên quan (như NSObject và NSString). Người nhận giữ nguyên không gian tên Java, tên gói được liên kết với tiền tố viết hoa kiểu lạc đà. Ví dụ: Theo mặc định, java.util.List được liên kết 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 tùy 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 Mục tiêu-C sử dụng đối số tên. Do đó, J2ObjC tạo tên đối số từ các loại của chúng. Ví dụ: dưới đây là cách đối tượng được chèn vào đầu ArrayList và cách danh sách đó được thêm vào một đối tượng khác danh sách:

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

Mỗi tên đối số chứa "with" cộng với loại dữ liệu. Hơi xấu xí nhưng đảm bảo rằng luôn được gọi trong Target-C như đã thực hiện trong Java.

Tên tiêu đề

Tuy nhiên, tệp tiêu đề không có tên được ánh xạ, mà 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à làm cho dễ dàng hơn nhiều, nhưng ban đầu có thể hơi khó hiểu, vì:

#import "java/util/Date.h"

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

Sử dụng tính năng dịch lớp

Ngoài các tên kỳ lạ (có thể đơn giản bằng tiền tố gói), các lớp đã dịch được sử dụng như bất kỳ lớp Target-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];