2010-11-10 12 views
11

Podczas rozszerzania istnieje możliwość zastąpienia init(...), ale nie ma żadnej "przeciwnej" metody, która byłaby wywoływana po przetworzeniu rund wszystkich.Przetwarzanie adnotacji Java: skąd mam wiedzieć, czy runda jest ostatnia?

To jest pewien problem: kiedy trzeba dołączyć informacje zebrane podczas każdej rundy do samym pliku, po prostu nie może nigdy zamknąć plik, ponieważ nigdy poznać, kiedy ostatnia runda było. Plik nigdy nie jest zamknięty i pozostaje pusty.

Korzystanie z haka zamykającego również nie działa, hak nigdy nie jest wywoływany.

Wszelkie pomysły?

Odpowiedz

4

Wydaje się, że moje rozumienie „rund” w kontekście przetwarzania adnotacji mylili:

Jak stwierdzono here,

[...] W każdej rundzie, procesor może być poproszono o przetworzenie podzestawu adnotacji znalezionych na źródłach i plikach klas wyprodukowanych przez poprzednią rundę. Dane wejściowe do pierwszej rundy przetwarzania są początkowymi danymi wejściowymi do uruchomienia narzędzia ; te początkowe wejścia mogą być traktowane jako wynik wirtualnej zerowej rundy przetwarzania . [...]

Ponieważ w moim przypadku użycia albo jestem nie produkuje żadnych nowych plików klas, albo ja je produkować ale nie potrzebę proces je, należy wystarczających po prostu "zliczać" rundy i wykonywać rzeczywistą pracę tylko w pierwszej (i wykonywać prace porządkowe, takie jak zamykanie plików, na końcu).

+3

Ale inne procesory adnotacji mogą generować pliki, które są następnie przetwarzane przez Ciebie. Dlatego nie powinieneś polegać na tym założeniu. –

Powiązane problemy