Bom dia pessoal,

Hoje vamos falar um pouco sobre assertivas, um assunto que irá ter poucas questões na prova e que podem ajudar na pontuação.

 

Assuntos

  • Assertivas

 

Assertivas

As assertivas são utilizadas para minimizar a quantidade de manipuladores de exceções que nunca vão ocorrer. Vamos ver um exemplo para entender melhor.

if (num >= 0) {

// faz alguma coisa

} else {

System.out.print(“Numero negativo: ” + num);

}

Já que você está tão certo que a variável num sempre será positiva então minimize seu código:

assert(num >= 0);

// faz alguma coisa

Sempre assuma que a condição (num >= 0) será verdadeira, caso contrário será lançada um AssertionError, e como vimos anteriormente, não podemos manipular um Error.

 

Existem duas formas de declarar as assertivas

1. assert(num >= 0);

2. assert(num >= 0) : “O valor de num eh: “ + num;

 

Como usar? É preciso ativar?

As assertivas foram adicionadas na versão 1.4 do Java, e para utilizarmos em tempo de execução é necessário ativar. Veja como:

java –ea br.com.certificacao.Teste ou java –enableassertions br.com.certificacao.Teste

e se desejar desativar (já é desativado por padrão):

java -da br.com.certificacao.Teste ou java -disableassertions br.com.certificacao.Teste

Vamos fazer um teste:

1. Crie uma classe MinhaClasseTeste.java no seu diretório home.

public class MinhaClasseTeste {

public static void main(String[] args) {

int num = -3;

assert(num > 0) : “A variavel num eh: “ + num;

System.out.println(“Ok”);

}

}

2. Compile: javac MinhaClasseTeste.java

3. Execute: java -ea MinhaClasseTeste

Resultado: Exception in thread “main” java.lang.AssertionError: A variavel num eh: -3

4. Execute: java -da MinhaClasseTeste

Resultado: Ok

 

E se depararmos com um código antigo que tinha um atributo chamado assert?

Será necessário compilar a classe usando o seguinte comando:

java –source 1.3 br.com.certificacao.Teste

 

E se executarmos uma classe com assert, mas utilizando o parâmetro padrão –da?

A JVM simplesmente irá ignorar o comando assert.

 

Quando devemos usar? (apenas sugestão)

  • Devemos usar em testes para nos pouparmos de manipular exceções.
  • Em método privados.

 

Quando não devemos usar? (apenas sugestão)

  • Em métodos públicos.
  • Em casos que afetam outros atributos:

assert(chamaMetodo());

public boolean chamaMetodo() {

usuario.ativar(); // altera atributo.

return true;

}

 

É isso ai pessoal, compartilhem, comentem e estudem!

 

Escrito por Marcos Oto Picarelli Prado