2011-12-20 15 views
5

Non ho capito questa funzionalità di Java. So che rende la codifica più facile e talvolta sembra più ordinata, ma a che serve? Al contrario, sento che è meglio visualizzare gli avvertimenti, poiché in futuro ognuno può riferirli prima di apportare modifiche al codice. Questo @SuppressWarnings aumenta l'efficienza di complimento O è secondo gli standard di codifica?Qual è l'uso di @SuppressWarnings

risposta

5

altre risposte già spiegato casi d'uso di @SuppressWarnings molto, ma voglio sottolineare il punto che volte è assolutamente necessario utilizzare @SuppressWarnings per superare le limitazioni del linguaggio stesso, e in questi casi l'uso di @SuppressWarnings è assolutamente legale .

In altri casi l'uso di @SuppressWarnings può essere considerato discutibile, perché in questi casi è sempre possibile eliminare gli avvisi modificando il codice (anche se, ovviamente, non è sempre accettabile).

Ecco alcuni casi comuni quando non si può assolutamente sbarazzarsi di avvertimenti senza @SuppressWarnings:

  • l'implementazione di un insieme generico array-backed (dal momento che non è possibile creare una matrice generica)
  • Un Map dalle classi a le loro implementazioni (dal momento che non è possibile assegnare valori diversi del parametro di tipo generico a differenti voci di mappa)
1

L'utilizzo effettivo consiste nell'eliminare gli avvisi. Questo è tutto. Niente di meno, niente di più. Non penso che influenzi l'efficienza della compilazione, ma sicuramente non eseguirò l'efficienza nel tempo.

3

Quando si ha a che fare con codice legacy che non supporta i generici (Java < = 1.4), questo è l'unico modo valido per sbarazzarsi degli avvisi di trasmissione.

+2

'SuppressWarnings' non sono utilizzati solo per il supporto di Generics o gli avvisi di cast. –

+1

chi dice che sono :)? –

+0

Rileggi il tuo post. –

9

Durante la programmazione, è necessario prestare attenzione agli avvisi del compilatore e, nel migliore dei casi, compilare il codice senza avvisi (e ovviamente errori).

Ma a volte non è possibile eliminare un avviso e SAPERE che il codice è corretto o non può essere modificato. Quindi non vuoi essere disturbato ogni volta dal compilatore che c'è qualcosa di sbagliato.

Quindi puoi sopprimerlo con il comando che hai menzionato.

1

L'uso di SuppressWarnings deve essere utilizzato durante la compilazione (quindi, solo il compilatore sa cosa fare quando vede l'annotazione SuppressWarnings).

I JavaDoc stati:

The set of warnings that are to be suppressed by the compiler in the annotated element. Duplicate names are permitted. The second and successive occurrences of a name are ignored. The presence of unrecognized warning names is not an error: Compilers must ignore any warning names they do not recognize. They are, however, free to emit a warning if an annotation contains an unrecognized warning name.

1

Ci sono diversi motivi per l'utilizzo di @SuppressWarnings ma uno dei casi più utili sono:

  • Avere un progetto esistente con migliaia di avvisi. Vuoi che la tua squadra si occupi degli avvertimenti ora, ma non hai il tempo di correggere tutti gli avvertimenti.

    L'annotazione consente di eliminare alcuni avvisi che non possono essere risolti rapidamente e ottenere una base "pulita". Questa base pulita è essenziale poiché nessuno avrà paura di controllare il codice con avvertenze quando ce ne sono migliaia, ma avrà paura quando il codebase non avverrà e tutti gli altri membri del team vedranno immediatamente quando qualcuno è controllo del codice con 2 avvisi o così.

  • Si stanno utilizzando librerie di terze parti e si è quindi infastiditi dagli avvisi che non è possibile correggere tranne che per modificare il codice di lib cosa non si desidera nella maggior parte dei casi.

A mio parere, il primo motivo è uno dei migliori casi di utilizzo per @SuppressWarnings.