2011-11-08 14 views
16

Dal doc Java:politica annotazione SOURCE Retention

CLASSE: annotazioni devono essere registrati nel file di classe dal compilatore, ma non è necessaria la conservazione dalla VM in fase di esecuzione.

RUNTIME: Le annotazioni devono essere registrate nel file di classe dal compilatore e conservate dalla VM in fase di esecuzione, in modo che possano essere lette in modo riflessivo.

FONTE: Le annotazioni devono essere scartate dal compilatore.

Capisco gli usi di autonomia (per usare l'annotazione con la riflessione) e CLASS (per il compilatore), ma non capisco quando può essere utile per utilizzare

@Retention (RetentionPolicy. SOURCE)

Puoi spiegare?

risposta

13

Cose come @SuppressWarnings, @Override sono annotazioni utilizzate dal compilatore, non necessarie in fase di esecuzione. Per quelli RetentionPolicy.SOURCE avrebbe senso. Anche le annotazioni possono essere utilizzate per generare codice (guarda a Spring ROO) - tali annotazioni non sono richieste anche in fase di esecuzione.

+4

e perché non RetentionPolicy.CLASS? – JohnJohnGa

+1

+1: alcune annotazioni utilizzate dal compilatore sono ritenzione CLASS. –

+1

Questi non sono necessari nel ByteCode (nel file .class). – gkamal

Problemi correlati