2010-11-10 9 views
11

AbstractProcessor का विस्तार करते समय init(...) को ओवरराइड करने की संभावना है, लेकिन कोई "विपरीत" विधि नहीं है, जिसे के बाद सभी राउंड संसाधित किया जाएगा।जावा एनोटेशन प्रसंस्करण: मुझे कैसे पता चलेगा कि एक गोल आखिरी है?

यह एक समस्या है: आप के लिए ही फ़ाइल प्रत्येक दौर के दौरान एकत्र की गई जानकारी संलग्न करने के लिए है जब, तुम बस कभी फ़ाइल को बंद नहीं कर सकते, क्योंकि आप कभी नहीं पता करने के लिए जब पिछले दौर था मिलता है। तो, फ़ाइल कभी बंद नहीं होती है और खाली रहती है।

शटडाउन हुक का उपयोग करना या तो काम नहीं करता है, हुक कभी नहीं कहा जाता है।

कोई विचार?

उत्तर

4

ऐसा लगता है कि एनोटेशन प्रसंस्करण के संदर्भ में "राउंड" की मेरी समझ गलत थे:

रूप here कहा गया है,

[...] हर दौर पर, एक प्रोसेसर हो सकता है स्रोत पर टिप्पणियों के स्रोत और कक्षा फ़ाइलों के पूर्व दौर द्वारा उत्पादित एनोटेशन को संसाधित करने के लिए कहा गया। प्रसंस्करण के पहले दौर में इनपुट उपकरण के रन के प्रारंभिक इनपुट हैं; इन शुरुआती इनपुट को प्रसंस्करण के वर्चुअल ज़ीरोथ राउंड के आउटपुट के रूप में माना जा सकता है। [...]

के बाद से अपने प्रयोग के मामले में मैं या तो किसी भी नए वर्ग फ़ाइलों नहीं उत्पादन कर रहा हूँ, या मैं उन्हें उत्पादन लेकिन नहींकी जरूरत प्रक्रिया उन्हें करने के लिए, यह enought किया जाना चाहिए केवल "गिनती" करने के लिए और केवल पहले कार्य में वास्तविक कार्य करें (और काम को साफ करना, जैसे फाइल बंद करना, इसके अंत में)।

+3

लेकिन अन्य एनोटेशन प्रोसेसर उन फ़ाइलों का उत्पादन कर सकते हैं जिन्हें आपके द्वारा संसाधित किया जाता है। इस प्रकार आपको उस धारणा पर भरोसा नहीं करना चाहिए। –