2010-11-10 29 views
11

Khi mở rộng AbstractProcessor, có khả năng ghi đè init(...), nhưng không có phương thức "đối diện", được gọi sau tất cả các vòng được xử lý.Xử lý chú thích Java: làm cách nào để biết liệu vòng có phải là lượt cuối cùng không?

Đây là một vấn đề: khi bạn phải thêm thông tin thu thập được trong mỗi vòng để cùng một tập tin, bạn chỉ có thể không bao giờ đóng tập tin, bởi vì bạn không bao giờ nhận biết khi vòng cuối cùng là. Vì vậy, tệp không bao giờ bị đóng và vẫn trống.

Sử dụng móc tắt cũng không hoạt động, móc không bao giờ được gọi.

Bất kỳ ý tưởng nào?

Trả lời

4

Dường như sự hiểu biết của tôi về "viên đạn" trong bối cảnh chế biến chú thích là sai:

Như đã nêu here,

[...] Trên mỗi vòng, một bộ xử lý có thể được đã yêu cầu xử lý một tập hợp con của các chú thích được tìm thấy trên nguồn và các tệp lớp học được tạo bởi vòng trước. Các yếu tố đầu vào vào vòng đầu tiên của quá trình là các đầu vào ban đầu cho hoạt động của hoạt động; các đầu vào ban đầu có thể được coi là đầu ra của vòng xử lý ảo. [...]

Vì trong trường hợp sử dụng của tôi tôi hoặc không sản xuất bất kỳ tập tin lớp mới, hoặc tôi sản xuất chúng nhưng không cần phải quá trình họ, nó nên được enought chỉ để "đếm" vòng và làm công việc thực tế chỉ trong một đầu tiên (và làm sạch công việc, chẳng hạn như đóng các tập tin, ở phần cuối của nó).

+3

Nhưng các bộ xử lý chú thích khác có thể tạo ra các tệp được xử lý bởi bạn. Do đó bạn không nên dựa vào giả định đó. –

Các vấn đề liên quan