Com es pot utilitzar millor les afirmacions a Java?

Aquest article us presenta Assertions In Java, un concepte senzill però important i el seguiment amb una demostració programàtica.

Aquest article us presenta Assertions In un concepte senzill però important i seguiu-lo amb una demostració programàtica. En aquest article es tractaran les següents indicacions,



Comencem, doncs,



Voleu provar si una suposició és correcta al vostre programa? Bé, podeu fer-ho amb declaracions d’afirmació a Java. Podeu utilitzar la paraula clau assert per crear afirmacions que us permetin provar les vostres suposicions en un programa.

Prenguem una instància. Un empleat d’una empresa ABC no pot tenir una edat negativa. Podeu fer servir una afirmació per assegurar-vos que l'edat d'un empleat no sigui negativa.



Prenem una altra instància. Si el vostre mètode calcula la velocitat d’una partícula, suposem que la velocitat de la partícula és inferior a la velocitat de la llum. Per tant, per provar aquesta suposició, podeu utilitzar sentències d'asserció a Java.

La sintaxi

Hi ha dues formes de la declaració d’afirmació:



assertexpression1

Aquí,

l'expressió 1 és una expressió booleana.

afirmar expression1: expression2

En aquesta forma, l'expressió 1 és una expressió booleana i l'expressió 2 té un valor que es compararà amb expression1.

Ara us podeu preguntar: quin formulari escolliu per als vostres programes? Podeu utilitzar el segon formulari quan el vostre programa tingui informació addicional que us pot ajudar a diagnosticar els errors o fallades del programa.

Abans de java 1.4, podríeu haver utilitzat la paraula clau 'assert' per anomenar les vostres variables, mètodes, funcions i molt més. Amb les versions més recents de la JVM, això pot causar un xoc de noms, de manera que heu de tenir una mica en compte aquest fet.

Continuem amb aquest article sobre afirmacions a Java

Per què necessiteu afirmacions?

Podríeu pensar que pot ser innecessària una afirmació d’afirmació a Java. És possible que no sigui necessari per a programes petits. Però, quan es tracta de grans programes amb una lògica complexa, aquestes afirmacions d’afirmació són útils.

L’ús principal de les declaracions d’asserció és per a depurar i provar. Si hi ha algun error a la sentència assertion, la JVM llançarà un error etiquetat com a AssertionError. Com podeu veure, això ofereix una manera eficaç de detectar i corregir errors en un programa.

A més de la depuració i la prova, la sentència assertion fa que el vostre codi sigui més llegible. Prenguem un exemple:

El codi següent ens ajudarà a verificar certes condicions que poden evitar que l'aplicació funcioni correctament.

Connection conn = getConnection () if (conn == null) {llança una RuntimeException nova ('La connexió és nul·la')}

Amb una única afirmació d'afirmació, podeu eliminar la sentència 'si i llançar', tal com es mostra a continuació:

Connection conn = getConnection () assert conn! = Null

Continuem amb aquest article sobre afirmacions a Java

Activació i desactivació de les afirmacions de Java

Com que les afirmacions de Java utilitzen la paraula clau assert, no cal que importeu paquets ni biblioteques. Com es va esmentar anteriorment, podeu utilitzar la paraula clau assert per a variables, mètodes i funcions. Per a la compatibilitat amb versions anteriors i per evitar un xoc potencial de noms, la JVM desactiva la validació de l’asserció per defecte. Les afirmacions s'han d'activar explícitament. Podeu fer-ho amb un argument de línia d'ordres (-enableassertions) o mitjançant la seva abreviatura (-ea).

Vegem alguns exemples:

java -ea com.baeldung.assertion.Assertion

L'anterior permet afirmar les classes.

java -ea: com.baeldung.assertion ... com.baeldung.assertion.Assertion

També podeu habilitar afirmacions per a paquets i classes particulars. Això es mostra a l'exemple anterior, on hem activat afirmacions per a les classes del paquet com.baeldung.assertion.

Ara que hem après a activar afirmacions, vegem com podem desactivar-les. Igual que activar afirmacions, la desactivació es pot fer mitjançant un argument de línia d'ordres (-disableassertions) o la seva abreviatura (-da) per a paquets i classes específics.

Continuem amb aquest article sobre afirmacions a Java

Com s'utilitzen les afirmacions de Java?

Hi ha dues coses que necessiteu per implementar afirmacions al programa: la paraula clau assert i una condició booleana. Prenem un exemple amb un fragment de codi:

public void setup () {Connection conn = getConnection () assert conn! = null}

També podeu utilitzar una cadena per a les afirmacions anteriors, tal com es mostra a continuació:

public void setup () {Connection conn = getConnection () assert conn! = null: 'La connexió és nul·la'}

Al fragment de codi anterior, si hi ha un AssertionError, s'utilitzarà la cadena per construir l'error.

En els dos casos anteriors, el codi comprova si la connexió a una font externa retorna un valor que no és nul. Si el valor és nul, la JVM llançarà un AssertionError automàticament.

En el segon exemple, la cadena que hem utilitzat apareix a la traça de la pila quan hi ha un AssertionError. Aquesta informació addicional us serà útil quan intenteu depurar el programa. Aquests missatges detallats us ajudaran a corregir un error que hauria provocat el fracàs de l'afirmació. Per tant, quan executeu la classe amb les afirmacions activades, el resultat serà similar al següent:

Excepció al fil 'principal' java.lang.AssertionError: la connexió és nul·la
a com.baeldung.assertion.Assertion.setup (Assertion.java:15)
a com.baeldung.assertion.Assertion.main (Assertion.java:10)

Vegem un exemple senzill:

import java.util.Scanner class AssertionExample {public static void main (String args []) {Scanner scanner = new Scanner (System.in) System.out.print ('Enter your age') int value = scanner.nextInt () valora el valor> = 18: 'No és vàlid' System.out.println ('el valor és' + valor)}}

Ara que teniu el codi a la mà, és hora d’executar-lo. Com que les afirmacions estan desactivades per defecte, les haureu d'activar.

Podeu compilar el codi anterior amb el següent: javac AssertionExample.java

A continuació, podeu executar-lo utilitzant el següent: java -ea AssertionExample

El sortida per al codi anterior és:

java obté la data de la cadena

Introduïu els vostres 11 anys

Excepció al fil 'principal' java.lang.AssertionError: no vàlid

Com podeu veure, hem donat 11 com a valor per edat. El programa no el tracta com un valor legítim. Per tant, veureu un AssertionError.

Continuem amb aquest article sobre afirmacions a Java

On no s'ha d'utilitzar l'afirmació?

Tot i que és bo tenir afirmacions en situacions que incloguin invariants internes, invariants de flux de control, condicions prèvies, postcondicions i invariants de classe, hi ha algunes situacions en què no s’han d’utilitzar afirmacions.

Explorem més sobre aquests aspectes:

Per a la comprovació d'arguments en mètodes públics

Heu d’entendre que la comprovació d’arguments forma part de les especificacions o contractes publicats d’un mètode. Cal seguir-les, independentment de si les afirmacions estan habilitades o no.

Continuem amb aquest article sobre afirmacions a Java

Ús d’assercions per a operacions

Per defecte, les afirmacions estan desactivades. El vostre programa no hauria de suposar que sempre s’avaluarà l’expressió booleana d’una declaració d’asserció.

Prenguem un exemple de com això pot afectar el vostre programa. Per exemple, voleu eliminar tots els elements nuls d'una llista de noms i sou conscient que la llista conté elements nuls.

afirmar names.remove (nul)

El fragment de codi anterior funcionaria si les afirmacions estiguessin activades. Però fallaria si es desactivessin les afirmacions, ja que el codi no eliminarà cap element nul. Per solucionar aquest problema, podeu utilitzar el fragment de codi següent al programa:

boolean nulls Eliminat = noms.remove (nul)
afirmar nuls Eliminats

El fragment de codi anterior suprimirà els valors nuls, fins i tot si les afirmacions estaven desactivades.

Ara, després d'executar el programa Java anterior, hauríeu entès 'Afirmacions a Java'. Així hem arribat al final d’aquest article sobre ‘Quicksort a Java’. Si voleu obtenir més informació,fes un cop d'ull al per Edureka, una empresa d’aprenentatge en línia de confiança. El curs de formació i certificació Java J2EE i SOA d’Edureka està dissenyat per formar-vos tant per a conceptes bàsics com avançats de Java, juntament amb diversos marcs Java com Hibernate & Spring

Tens alguna pregunta? Si us plau, mencioneu-lo a la secció de comentaris d’aquest bloc i us respondrem el més aviat possible.