Alguem sabe explicar qual a logica do comando ASSERT ?
Obrigado.
Alguem sabe explicar qual a logica do comando ASSERT ?
Obrigado.
[code]JAVA: comando assert
* assert Expressao1 [: Expressao2];
* Se Expressao1 for verdadeiro, segue a execução
* Se Expressao1 for falso, lança um AssertionError
* Expressao2 (opcional) é passado para o construtor do AssertionError
JAVA: comando assert
* Uso: pré e pós condições, invariantes e ?salvaguardas?
* Asserções presentes no código podem ser ?ligadas e desligadas?
o javac -source 1.4 MyClass.java
o java [-enableassertions | -ea: <packagename>?...?] [classname]
JAVA: comando assert
static void administerInsulin ( ) {
int maxIncrements = InsulinPump.maxDose / 8 ;
int increments = InsulinPump.currentDose / 8 ;
assert currentDose <= InsulinPump.maxDose : Pump.doseHigh;
for (int i=1; i<= increments; i++) {
generateSignal () ;
assert i<= maxIncrements : Pump.incorrectIncrements;
} // for loop
} //administerInsulin [/code]
fonte, google - http://www.google.com.br/search?hl=pt-BR&q=comando+assert+java&btnG=Pesquisa+Google&meta=lr%3Dlang_pt
Serve para você testar pré ou pós condições de sua função, deixando-as explicitas em seu código.
Geralmente, condições desse tipo só tem sentido no momento da programação, não no código do usuário final, por isso, as asserções só estarão disponíveis se a flag -ea for utilizada na VM.
Tem um tutorial do GUJ sobre isso, aqui.
Mais um link interessante sobre o tema:
http://www.javapractices.com/TableOfContents.cjp
Assertions in general
http://www.javapractices.com/Topic101.cjp
Assert use cases
http://www.javapractices.com/Topic102.cjp
Assert is for private arguments only
http://www.javapractices.com/Topic100.cjp
Force enabling of assertions
http://www.javapractices.com/Topic99.cjp
fw
[quote=civi]Alguem sabe explicar qual a logica do comando ASSERT ?
Obrigado.[/quote]
é quando vc quer avaliar um expressao que tem certeza, que jamais era será false… lembrando que nao é o mesmo que vc pegar um argumento de um metodo public e tentar testar… o uso de assert nao pode gerar efeitos colaterais em seu codigo e jamais ser false, senao é lançada um exceção…
é bem legal vc fazer um debug usando assert caso aquela instrução seja false vc diz a linha 20 foi configurada para false…
assert false : "linha 10 configurada para false ";