2011-11-08 14 views
16

Od doc Java:Polityka Adnotacja SOURCE retencji

KLASA: adnotacje mają być zapisane w pliku klasy przez kompilator, ale nie muszą być zatrzymywane przez VM w czasie wykonywania.

RUNTIME: Adnotacje powinny być zapisywane w pliku klasy przez kompilator i zachowywane przez maszynę wirtualną w czasie wykonywania, aby mogły być odczytywane w odbiciu.

ŹRÓDŁO: Adnotacje należy usunąć przez kompilator.

Rozumiem zwyczaje wykonywania (w celu korzystania z adnotacji z odbicia) i klasy (dla kompilatora), ale nie rozumiem, kiedy może to być przydatne do wykorzystania

@Retention (RetentionPolicy. ŹRÓDŁO)

Czy możesz wyjaśnić?

Odpowiedz

13

Rzeczy takie jak @SuppressWarnings, @Override to adnotacje używane przez kompilator - niepotrzebne w środowisku wykonawczym. Dla tych RetentionPolicy.SOURCE miałoby sens. Do wygenerowania kodu można również użyć adnotacji (patrz Spring ROO) - takie adnotacje również nie są wymagane w czasie wykonywania.

+4

i dlaczego nie RetentionPolicy.CLASS? – JohnJohnGa

+1

+1: Niektóre adnotacje używane przez kompilator to zachowanie CLASS. –

+1

Nie są potrzebne w ByteCode (w pliku .class). – gkamal