Dúvida assert

Vendo essa questão de exemplo:

public class Donkey { public static void main (String [] args) { boolean assertsOn = false; assert (assertsOn) : assertsOn = true; if (assertsOn) { System.out.println("assert is on"); } } }

O que acontecerá se esse programa for executado duas vezes, a primeira com assertions desabilitadas e a segunda habilitadas?
Resultado: > Nenhuma saída e…
> AssertionError

Seria por que quando as assertions não estão habilitadas a JVM ignora o comando "assert" ?
Senão, não entendi o resultado…

vlewzz:!:

Basicamente o que vc disse está correto, as assertions só tem efeito quando vc passa o argumento para a JVM, e quando o valor avaliado é falso ele lança o erro.

Aqui tem um artigo sobre assertions: http://www.guj.com.br/article.show.logic?id=23

[]'s

Com asserts off:

  public class  Donkey {  
     public static void main (String [] args) {  
        boolean assertsOn = false;   //declara assertsOn = false
        assert (assertsOn) : assertsOn = true;   //asserts desabilitadas, não faz nada
        if (assertsOn) {  // assertsOn está a false, não entra no if
           System.out.println("assert is on");  
        }  
       //nunca vai imprimir nada porque não entrou no if
     }  
  }  

Com asserts on:

  public class  Donkey {  
     public static void main (String [] args) {  
        boolean assertsOn = false;   //declara assertsOn = false
        assert (assertsOn) : assertsOn = true;   //asserts habilitadas, checa a expressão dentro de () que vai dar false. Como deu false vai lançar um erro com a expressão depois dos dois pontos
    
// deu erro atrás não executa mais nada
    if (assertsOn) {  
           System.out.println("assert is on");  
        }  
    
     }  
  }  

O teu erro foi pensar que se a expressão for false ele executa o que está depois dos dois pontos e continua. Se der erro, aborta a execução e lança como mensagem de erro o que está depois dos dois pontos. Como tens uma atribuição, isso não terá qualquer valor.

dar uma olhada: http://camilolopes.wordpress.com/2008/05/20/boas-praticas-de-programacao-assert/

abracos,

Esse tutorial pode ser util http://jspbrasil.com.br/mostrar/71

Agora entendi!!
A questão é que não sabia que com assertions desabilitadas a JVM desconsiderava "assert ‘expressão 1’: …

Vlew’zz:!: