Sprievodca Guava’s PreConditions

1. Prehľad

V tomto tutoriáli si ukážeme, ako používať Google Guava Predpoklady trieda.

The Predpoklady class poskytuje zoznam statických metód na kontrolu, či je vyvolaná metóda alebo konštruktor s platnými hodnotami parametrov. Ak zlyhá predpoklad, je vyvolaná prispôsobená výnimka.

2. Google Guava Predpoklady

Každá statická metóda v Predpoklady trieda má tri varianty:

  • Bez argumentov. Výnimky sú vyvolané bez chybového hlásenia
  • Extra Objekt argument fungujúci ako chybová správa. Výnimky sú vyvolané chybovou správou
  • Extra argument typu String s ľubovoľným počtom ďalších Objekt argumenty fungujúce ako chybová správa so zástupným znakom. Toto sa trochu ponáša printf, ale pre kompatibilitu a účinnosť GWT to umožňuje iba % s ukazovatele

Poďme sa pozrieť na to, ako používať Predpoklady trieda.

2.1. Maven závislosť

Začnime pridaním závislosti knižnice Guava od spoločnosti Google na serveri pom.xml:

 com.google.guava guava 29.0-jre 

Najnovšiu verziu závislosti si môžete skontrolovať tu.

3. checkArgument

The metóda checkArgument z Trieda predpokladov zaisťuje pravdivosť parametrov odovzdaných volajúcej metóde. Táto metóda akceptuje logickú podmienku a hodí znak IllegalArgumentException keď je podmienka nepravdivá.

Pozrime sa, ako môžeme túto metódu použiť na niekoľkých príkladoch.

3.1. Bez chybovej správy

Môžeme použiť checkArgument bez prenosu akýchkoľvek ďalších parametrov do checkArgument metóda:

@Test public void whenCheckArgumentEvaluatesFalse_throwsException () {int vek = -18; assertThatThrownBy (() -> Preconditions.checkArgument (vek> 0)) .isInstanceOf (IllegalArgumentException.class) .hasMessage (null) .hasNoCause (); }

3.2. S chybovou správou

Z platformy môžeme dostať zmysluplnú chybovú správu checkArgument metóda odovzdaním chybovej správy:

@Test public void givenErrorMsg_whenCheckArgEvalsFalse_throwsException () {int vek = -18; String message = "Vek nemôže byť nula alebo menej ako nula."; assertThatThrownBy (() -> Preconditions.checkArgument (vek> 0, správa)) .isInstanceOf (IllegalArgumentException.class) .hasMessage (správa) .hasNoCause (); }

3.3. S chybovou správou šablóny

Môžeme dostať zmysluplnú chybovú správu spolu s dynamickými údajmi z checkArgument metóda odovzdaním chybovej správy:

@Test public void givenTemplateMsg_whenCheckArgEvalsFalse_throwsException () {int vek = -18; String message = "Vek by mal byť kladné číslo, zadali ste% s."; assertThatThrownBy (() -> Preconditions.checkArgument (vek> 0, správa, vek)) .isInstanceOf (IllegalArgumentException.class) .hMessage (správa, vek) .hasNoCause (); } 

4. checkElementIndex

Metóda checkElementIndex skontroluje, či je index platným indexom v zozname, reťazci alebo poli špecifikovanej veľkosti. Index prvkov sa môže pohybovať od 0 do výlučnej veľkosti. Zoznam, reťazec alebo pole neprenesiete priamo, iba odovzdáte jeho veľkosť. Táto metóda vyvolá IndexOutOfBoundsException ak index nie je platným indexom prvku, inak vráti index, ktorý sa odovzdáva metóde.

Pozrime sa, ako môžeme túto metódu použiť, keď si ukážeme zmysluplnú chybovú správu z checkElementIndex metóda odovzdaním chybovej správy, keď vyvolá výnimku:

@Test public void givenArrayAndMsg_whenCheckElementEvalsFalse_throwsException () {int [] čísla = {1, 2, 3, 4, 5}; String message = "Skontrolujte väzbu poľa a skúste to znova"; assertThatThrownBy (() -> Preconditions.checkElementIndex (6, numbers.length - 1, message)) .isInstanceOf (IndexOutOfBoundsException.class) .hasMessageStartingWith (message) .hasNoCause (); }

5. checkNotNull

Metóda checkNotNull skontroluje, či má hodnota zadaná ako parameter hodnotu null. Vráti hodnotu, ktorá bola skontrolovaná. Ak je hodnota, ktorá bola odovzdaná tejto metóde, nulová, potom a NullPointerException je hodená.

Ďalej si ukážeme, ako používať túto metódu, a to ukážkou, ako získať zmysluplné chybové hlásenie z checkNotNull metóda odovzdaním chybovej správy:

@Test public void givenNullString_whenCheckNotNullWithMessage_throwsException () {String nullObject = null; String message = "Skontrolujte dodaný objekt, jeho hodnotu null!"; assertThatThrownBy (() -> Preconditions.checkNotNull (nullObject, správa)) .isInstanceOf (NullPointerException.class) .hMessage (správa) .hasNoCause (); }

Môžeme tiež dostať zmysluplnú chybovú správu založenú na dynamických dátach z checkNotNull metóda odovzdaním parametra do chybovej správy:

@Test public void whenCheckNotNullWithTemplateMessage_throwsException () {String nullObject = null; String message = "Skontrolujte dodaný objekt, jeho% s!"; assertThatThrownBy (() -> Preconditions.checkNotNull (nullObject, správa, nový objekt [] {null})) .isInstanceOf (NullPointerException.class) .hasMessage (správa, nullObject) .hasNoCause (); }

6. checkPositionIndex

Metóda checkPositionIndex skontroluje, či je index odovzdaný ako argument tejto metóde platným indexom v zozname, reťazci alebo poli zadanej veľkosti. Index pozícií sa môže pohybovať od 0 do veľkosti vrátane. Zoznam, reťazec alebo pole neprenesiete priamo, iba odovzdáte jeho veľkosť.

Táto metóda vyvolá IndexOutOfBoundsException ak zadaný index nie je medzi 0 a danou veľkosťou, inak vráti hodnotu indexu.

Pozrime sa, ako môžeme dostať zmysluplné chybové hlásenie od checkPositionIndex metóda:

@Test public void givenArrayAndMsg_whenCheckPositionEvalsFalse_throwsException () {int [] čísla = {1, 2, 3, 4, 5}; String message = "Skontrolujte viazanie poľa a skúste to znova"; assertThatThrownBy (() -> Preconditions.checkPositionIndex (6, numbers.length - 1, message)) .isInstanceOf (IndexOutOfBoundsException.class) .hasMessageStartingWith (message) .hasNoCause (); }

7. checkState

Metóda checkState kontroluje platnosť stavu objektu a nie je závislý na argumentoch metódy. Napríklad an Iterátor môže to použiť na kontrolu toho, či bol volaný ďalší pred akýmkoľvek volaním na odstránenie. Táto metóda vyvolá IllegalStateException ak je stav objektu (logická hodnota odovzdaná ako argument metóde) v neplatnom stave.

Pozrime sa, ako môžeme túto metódu použiť, keď si ukážeme zmysluplné chybové hlásenie z checkState metóda odovzdaním chybovej správy, keď vyvolá výnimku:

@Test public void givenStatesAndMsg_whenCheckStateEvalsFalse_throwsException () {int [] validStates = {-1, 0, 1}; int danýStát = 10; String message = "Zadali ste neplatný stav"; assertThatThrownBy (() -> Preconditions.checkState (Arrays.binarySearch (validStates, givenState)> 0, správa)) .isInstanceOf (IllegalStateException.class) .hasMessageStartingWith (message) .hasNoCause (); }

8. Záver

V tomto tutoriáli sme ilustrovali metódy Predbežné podmienky triedy z knižnice Guava. The Predpoklady class poskytuje kolekciu statických metód, ktoré sa používajú na overenie, či je vyvolaná metóda alebo konštruktor s platnými hodnotami parametrov.

Kód patriaci k vyššie uvedeným príkladom možno nájsť v projekte GitHub - jedná sa o projekt založený na Maven, takže by malo byť ľahké ho importovať a spustiť tak, ako je.


$config[zx-auto] not found$config[zx-overlay] not found