2009-10-24 12 views

risposta

2

Si presume che @deprecated sia di interesse solo nella fase di compilazione (IDE, compilatore), ma non è un intervallo per gli scenari di strumentazione di imaging in cui si richiedono tali informazioni.

Ad esempio, un IDE può informarti del numero di siti di chiamata per un metodo deprecato, ma come andresti a determinare la percentuale di tempo che l'applicazione spende in metodi deprecati?

+2

RetentionPolicy.Class sarebbe sufficiente anche per questo. – Jorn

1

Immagina di compilare MyClass.class con metodi obsoleti. Se le tue annotazioni @Deprecated sono andate perse, l'IDE o il compilatore non potrebbero avvisarti quando chiami quei metodi da un'altra classe.

+4

RetentionPolicy.Class sarebbe sufficiente per quello. – meriton

+0

Mmm, è vero ... – sinuhepop

1

Il tempo di esecuzione di un altro è un altro, ad es. quando si scrive codice che utilizza un'API.

+0

Ehm ... come intendi? Quando utilizzo un'API non accedo a quell'API tramite un debugger. Io uso i file di classe per quell'api, ma è coperto da RetentionPolicy.Class. – meriton

+0

Ad esempio, quando si utilizzano componenti dell'interfaccia grafica dalla tavolozza dell'IDE e li si rilascia sul modulo, viene eseguito il codice. – JRL

1

Buona domanda, e mi sto stirando per arrivare a uno scenario convincente. Tutto quello che ho è che potevo immaginare un'applicazione che usava un classloader che non permetteva l'uso di codice deprecato. Ciò richiederebbe RetentionPolicy.RUNTIME.

Questo è tutto quello che ho ... usi

1

Coppia pratici che vengono in mente:

Con Velocity si può avere un costume Uberspector che registra le chiamate reali da modelli Velocity a qualsiasi metodo deprecato e solo leggendo il log puoi vedere dove viene usato il metodo e puoi andare a modificarlo.

Con Wicket si può avere una politica di sicurezza il che non consente un'istanza di qualsiasi classe in base ai contenuti .class quindi potrebbe essere possibile realizzare un sistema che impedisce la creazione di istanze di classi @Deprecated se non sei un amministratore.

+0

per entrambi i punti, sarebbe ancora possibile controllarli in fase di compilazione. Il controllo delle dipendenze dovrebbe fare il trucco, non so se capisco quello che hai detto sopra – Ravisha

4

Esistono alcuni framework e strumenti che consentono di creare oggetti con cui lavorare.

Ad esempio, molti editor di interfacce utente JavaBean creano istanze dei bean e interagiscono con essi man mano che l'utente manipola l'interfaccia utente che stanno progettando.

Avere l'annotazione @Deprecated disponibile in fase di esecuzione consente a strumenti come questo di segnalare metodi, eventi, proprietà deprecati per l'utente.

Problemi correlati