Espera -se que a afirmação seja usada em um programa em que o programador suspeita que essa condição possa existir. Se a declaração de assert for usada e a condição não ocorrer incorretamente, o programa continuará sem nenhum problema. Se a condição ocorrer incorretamente, uma mensagem de erro será relatada. Essa verificação envolve uma expressão booleana. Obviamente, a codificação de afirmação não deve necessariamente envolver a palavra afirmada. Existem muitos bons programas que afirmam a codificação sem a palavra reservada. No entanto, o uso da palavra afirmada afirma traz à tona um recurso específico na programação, tornando o programa mais construtivo.
Considere o seguinte segmento de código:
Número inteiro em = null;Atualmente, o valor de "in" é nulo, mas pode ser qualquer número inteiro. O se-bock será executado se não for nulo, o que deve ser considerado bom. Se for nulo (falso), a parte da declaração IF composta será executada, relatando o problema.
Agora, uma declaração assert pode substituir a maioria das partes da declaração IF composta. Este é um uso clássico da declaração de assert. Outro uso clássico é verificar se o limite do resultado de um cálculo não foi alcançado, pois a descrição a seguir se apresenta:
A velocidade de um objeto em movimento é dada por,
s = d/tonde d é distância, t é o tempo gasto e s é o resultado (velocidade). Pode -se desejar que a velocidade do objeto permaneça abaixo da velocidade do som e, portanto, não causa ondas de choque. Nesse caso, a declaração assert pode ser usada para afirmar que a velocidade está abaixo da velocidade do som, que é de 343 m/s.
Um código do programa para esse problema, sem a declaração de afirmação, pode ser o seguinte:
duplo d = 15, t = 3, s;Sintaxes de afirmação em java
Em Java, as sintaxes de afirmação estão em duas formas. Eles são:
afirmar expressão1;Para a primeira opção (instrução), a expressão1 é uma expressão booleana. Nota: igual a, em uma expressão booleana é ==, porque, na computação, = significa atribuição enquanto == significa igualdade. Para a segunda opção (instrução), a expressão1 ainda é uma expressão booleana; Mas a expressão2 resulta em um valor, que pode ou não ser booleano (verdadeiro ou falso). No entanto, o valor não deve ser nulo. O objetivo da expressão2 é para mensagens o erro para o programador ou o usuário. Nesta segunda opção, o cólon separa as duas expressões. O cólon não se aplica à primeira opção.
Qualquer declaração de afirmação significa finalmente verdadeira ou falsa por causa da expressão booleana. Se for verdade, o programa continua como esperado. Se for falso, o erro deve ser relatado.
Assert Expression1
Validação
O código de exemplo para validação acima, é repetido aqui para referência rápida (visual):
Número inteiro em = null;"Assert Expression1" pode ser usado para este código da seguinte forma:
Número inteiro em = null;Se a afirmação estiver ativada para o programa e se afirmar como falsa, como para essa codificação específica, as declarações abaixo da instrução Assert não serão executadas; e a Java Virtual Machine (OS) emitirá uma mensagem de erro. Se a afirmação não estiver ativada para o programa, as declarações abaixo da declaração assert serão executadas, apesar de serem falsas. Veja como ativar a afirmação para um programa abaixo.
Para essa codificação assert, o programador permite que a JVM lide com as mensagens de erro inteiramente por causa da ausência de expressão2.
Impedindo o alcance do limite
O código de exemplo para evitar o alcance do limite acima é repetido aqui para referência rápida (visual):
duplo d = 15, t = 3, s;"Assert Expression1" pode ser usado para este código da seguinte forma:
duplo d = 15, t = 3, s;Se a afirmação estiver ativada para o programa, para essa codificação específica, as declarações abaixo da instrução Assert serão executadas e a Java Virtual Machine (OS) não emitirá uma mensagem de erro; já que o resultado de 5 é menor que 343. Se a afirmação não estiver ativada, as declarações abaixo da declaração assert ainda serão executadas porque elas serão ignoradas mesmo que sejam falsas. Veja como ativar a afirmação para um programa abaixo.
Para essa codificação assert, o programador ainda permite que a JVM lide completamente com as mensagens de erro; por causa da ausência de expressão2.
Expressão2
Validação
O código de exemplo para validação acima, é repetido aqui para referência rápida (visual):
Número inteiro em = null;Expressão2 é para relatório de erro. A parte mais importante desta declaração IF composta é para relatórios de erros. Um uso correspondente da segunda declaração de afirmação, para esta codificação, pode ser a seguinte:
Número inteiro em = null;Se a afirmação estiver ativada para o programa, para essa codificação específica, as declarações abaixo da declaração assert não serão executadas e a Java Virtual Machine (OS) emitirá uma mensagem de erro. Desta vez, a mensagem de erro usará o valor da variável, em. Se a afirmação não estiver ativada, as declarações abaixo da declaração assert serão executadas, apesar do fato de que a declaração assert resulta em false. Veja como ativar a afirmação para um programa abaixo.
Para essa codificação assert, o programador influencia a JVM em seu trato com mensagens de erro por causa da presença de expressão2 (in) - veja os detalhes abaixo.
Impedindo o alcance do limite
O código de exemplo para evitar o alcance do limite acima é repetido aqui para referência rápida (visual):
duplo d = 15, t = 3, s;Expressão2 é para relatório de erro. A parte mais importante desta declaração IF composta é para relatórios de erros. Um uso correspondente da segunda declaração de afirmação, para esta codificação, pode ser a seguinte:
duplo d = 15, t = 3, s;Se a afirmação estiver ativada para o programa, para essa codificação específica, as declarações abaixo da instrução Assert serão executadas e a Java Virtual Machine (OS) não emitirá uma mensagem de erro; já que o resultado de 5 é menor que 343. Se o resultado (valor) de s for igual ou superior a 343, a mensagem de erro envolverá o valor de s. Se a afirmação não estiver ativada, as declarações abaixo da declaração assert ainda serão executadas porque elas serão ignoradas, mesmo que resultarem em falso. Veja como ativar a afirmação para um programa abaixo.
Para essa codificação assert, o programador influencia a JVM em seu trato com mensagens de erro por causa da expressão2 (s) - veja os detalhes abaixo.
Ativando a afirmação
Se um programa tiver codificação de afirmação, a declaração de assert será efetiva para respeitar a declaração de afirmação se o programa estiver ativado. Ativando a declaração de afirmação é feita após a compilação do programa Java ter sido compilado em ByteCode. Isso é feito na linha de comando ao executar o programa. Isso é feito incluindo o Switch -EnableSertions. Com interruptores na linha de comando, o - não significa "levar embora"; é um hífen (bala).
O uso do comutador opera apenas para a execução do programa. Se o interruptor não for usado, na próxima vez que o programa for chamado, a execução ignorará a declaração de assert.
Nesta seção, apenas o código para validação será abordado. O código de validação com a primeira declaração de opção é:
Número inteiro em = null;Suponha que este esteja no método main () da classe e arquivo principal, chamado TheClass. O arquivo normalmente será compilado com o comando:
Javac TheClass.JavaA compilação deve passar com sucesso. Com o interruptor, o programa de bytecode resultante, TheClass.classe, será executada na linha de comando com,
Java -EnableSertions theClassO relatório (saída) será:
Exceção no tópico "principal" java.Lang.AssertionErrorObserve que não há menção ao valor, nulo, para a variável, "in" na saída. Com isso, as declarações abaixo da declaração de assert no programa não são executadas.
O código de validação com a segunda opção afirmam declaração, que tem ": in" é:
Número inteiro em = null;Suponha que este esteja no método main () da classe e arquivo principal, chamado TheClass. O arquivo será compilado com o comando:
Javac TheClass.JavaA compilação deve passar com sucesso. Com o interruptor, o programa de bytecode resultante, TheClass.classe, será executada na linha de comando com,
Java -EnableSertions theClassO relatório (saída) será:
Exceção no tópico "principal" java.Lang.AssertionError: NULLObserve que há menção ao valor, nulo, para a variável, "in" na saída, como ": nula" na primeira linha de saída. Com isso, as declarações abaixo da declaração de assert no programa ainda não são executadas devido à possibilidade de qualquer declaração de assert no programa. Se o interruptor, -enableSertions, for omitido na linha de comando, qualquer (ou tudo) afirmam declarações no programa será ignorado. O código abaixo ele ainda será executado, mesmo que as declarações assert (expressões booleanas) sejam falsas.
Conclusão
A afirmação em Java é uma declaração baseada na palavra reservada, afirmam, tendo uma expressão booleana e terminando com um semicolon. Acontece que certas condições em um programa podem impedir que ele funcione corretamente. A declaração assert verifica se essas condições existem em um programa.
Bons exemplos para o uso da declaração de assert estão em validação e para verificar se o resultado de um cálculo não atravessa um limite. Existem duas formas da declaração assert: uma que não ajuda na mensagem de erro e a outra que auxilia na mensagem de erro. Uma afirmação em Java é ativada na linha de comando, para o bytecode compilado, com o interruptor, -enableSertions.