2013-07-29 17 views
10

Perché la mia affermazione non fornisce alcun risultato? Penso che la prima affermazione di asserzione dovrebbe fallire, ma non vedo nulla che venga visualizzato su Eclipse.Errore di asserzione Java non genera errore

Sto usando Eclipse per eseguire questo programma.

package java.first; 

public class test { 
    public static void main(String[] args) throws Exception { 
    String s = "test1"; 
    assert (s == "test"); 
    s = "test"; 
    assert (s == "test"); 
    } 
} 

risposta

7

Devi abilitare affermazioni con il -ea argomento (abbreviazione di -enableassertions).

In Eclipse:

  • fare clic destro sul progetto, poi "Esegui come""Esegui ... Configurazioni"
  • Selezionare i "argomenti" scheda
  • Inserire -ea nel campo "Argomenti VM".
  • Selezionare "Applica"

Ora, in esecuzione dovrebbe causare un AssertionError.

18

È necessario impostare -ea (Abilita asserzioni) nelle opzioni JVM.


non collegati, ma è quasi sempre desidera string1.equals(string2) piuttosto che ==.

+0

di elaborare su questo, si può capire l'operatore '==' come esso risponde alla seguente domanda: il riferimento a questi punti di oggetto per lo stesso riferimento di questo altro oggetto ? sono questi 2 ragazzi allocati nello stesso blocco di memoria, che è vero solo se esiste 1 e solo 1 istanza di tale oggetto nell'intero contesto dell'applicazione (singleton). In altre parole, un'istanza di un oggetto è solo '==' a se stessa. Dato che lo si confronta con un'altra istanza che contiene lo stesso valore, è necessario utilizzare 'equals'method come indicato sopra. – VallaDanger

+0

quando dici '(s ==" test ")' stai creando una nuova istanza di String con il valore 'test', quindi chiedere se la nuova istanza è' == 'a' s' non è assolutamente 'true 'a meno che non si usi il metodo' String.intern() 'che assicurerà che tutte le stringhe aventi gli stessi valori condividano la stessa memoria. C'è ancora molto da sapere sull'uguaglianza degli oggetti, motivo per cui consiglierei di dare un'efficace versione di Java (2a edizione, capitolo 3, elemento 8). – VallaDanger

1

È necessario abilitarlo utilizzando l'argomento -ea.

4

È necessario attivare il controllo asserzione in fase di esecuzione. La documentazione Oracle per Java afferma:

Per attivare le asserzioni in diverse granularità, utilizzare i -enableassertions, o -ea, interruttore. Per disabilitare le asserzioni a varie granularità, usa -disableassertions, o -da, switch.

Tutti i dettagli sul sito web di Oracle a http://docs.oracle.com/javase/1.4.2/docs/guide/lang/assert.html#enable-disable

Per modificare le opzioni di runtime per eseguire programmi all'interno di Eclipse sarà necessario modificare i parametri Eclipse esegue il programma con. Come fare questo varia a seconda della versione di Eclipse, ma ecco come funziona in Europa Eclipse ...

  • Aprire la finestra di dialogo Esegui (questo dovrebbe essere un'opzione nel menu "Run").
  • Fare clic sulla scheda "(x) = Argomenti".
  • Nel campo "Argomenti VM", immettere -ea per abilitare asserzioni.
  • Fare clic sul pulsante "Applica".

risposta "in prestito" da http://www.coderanch.com/t/416987/vc/enable-Assertions-eclipse

Problemi correlati