2013-02-23 8 views
14

creo una classe che estende Exception classe, ho ottenuto questo avvertimento su Eclipsecome rimuovere il avvertimento La classe serializzabile className non dichiara un campo statico serialVersionUID definitiva del tipo lungo

I PhoneAlreadyExists classe serializzabili non lo fa dichiarare statico finale serialVersionUID campo di tipo lungo

come rimuoverlo per favore?

public class PhoneAlreadyExists extends Exception { 
    public PhoneAlreadyExists() { 
     // TODO Auto-generated constructor stub 
     super(); 
    } 

    PhoneAlreadyExists(String message) { 
     super(message); 
    } 

} 
+5

Aggiungere un campo 'serialVersionUID' alla classe. – Perception

+1

È solo un avvertimento e non si bloccherà nulla. Se ti infastidisce davvero, puoi sopprimerlo passando sopra al messaggio di avviso e facendo clic sul primo suggerimento (o su uno dei quali dice che puoi sopprimerlo). –

+1

Ctrl-1 e quickfix –

risposta

7

aggiungere un'annotazione @SuppressWarnings("serial") sulla tua classe, di ignorare che l'avvertimento

+1

Oppure * risolve correttamente l'avviso *. Di solito è meglio che ignorarlo, anche se sono 4 righe di codice (incluso JavaDoc, ovviamente - altrimenti è solo 1) –

+2

Ovviamente, ma di solito non è necessario definire la versione seriale, quindi questa è una soluzione rapida per il problema . –

+2

Non è molto più veloce. Gli IDE Java possono generare campi di versione seriale usando la funzione "quick fix". Per esempio. eclisse. –

6

è necessario dichiarare un campo statico serialVersionUID finale di tipo long.

Cerca l'API di Java Serializable. Le eccezioni devono implementare Serializable, e Serializable classi devono avere un serialVersionUID:

public static final long serialVersionUID = 1L; 

Ogni volta che si apportano modifiche incompatibili alla classe, incremento questa versione.

22

Per modificare il comportamento in Eclipse a livello globale: Vai a Preferenze-> Java->compilatore -> Errori/Warnings-> potenziali problemi di programmazione. C'è una voce per questo problema specifico. Puoi cambiarlo anche per un progetto specifico.

Questo risponde alla tua domanda, sebbene - mi raccomando di lasciarlo a livello di avviso e aggiungere i campi mancanti. Oppure aggiungi l'annotazione SuppressWarnings a quelle classi serializzabili che non hanno realmente bisogno del campo perché non verranno mai serializzate.

+1

Grazie. In realtà è Preferenze -> Java -> Compilatore -> Errori/avvisi -> Potenziali problemi di programmazione – Buffalo

+0

Grazie per la correzione! Ho aggiornato la mia risposta con il percorso corretto. –

+1

Divertente come le risposte più utili/al punto sono sempre lasciate indietro, la tua dovrebbe essere la risposta accettata. – Buffalo

1

solo aggiungere questo @SuppressWarnings codice ("seriale") sopra le PhoneAlreadyExists classe pubbliche estende Exception {line

+0

Si prega di fornire ulteriori dettagli e formattare la risposta in modo appropriato. – Thomas

1

Si consiglia di aggiungere il serialVersionUID nella maggior parte dei casi, ma eclissi dà l'avvertimento su tutte le classi di swing derivata, che non sarà mai serializzato. Ho provato a modificare le impostazioni in Preferenze-> Java -> Compilatore -> Errori/avvisi -> Potenziali problemi di programmazione, ma non ha avuto alcun effetto. Quindi suppongo che la soluzione migliore sarebbe sopprimere l'avviso su ogni classe che non verrà mai serializzata; o stringi i denti e ignori l'avvertimento.

2

Per ignorare l'avviso "La classe serializzabile className non dichiara una finale serialVersionUID statica ......" effettuare le seguenti operazioni all'interno di Eclipse *:

  1. fare clic su Finestra-Preferenze-java-compiler-Errori Avvertenze/
  2. Fare clic su "problemi di programmazione potenziali"
  3. scorrere fino a "class Serializable senza serialVersionUID"
  4. scegliere "Ignora"
  5. Fare clic su Applica
  6. Fare clic su OK

salvare e chiudere l'IDE Eclipse Quando si riapre eclissi, non dovrebbero più essere incluso questi avvertimenti specifici.

* Per questa soluzione esempio, sto utilizzando Eclipse IDE per sviluppatori Java - Versione: Mars.2 rilascio (4.5.2)

Problemi correlati