Jak nejlépe využít tvrzení v Javě?



Tento článek vás seznámí s tvrzeními v Javě, jednoduchým, ale důležitým konceptem a navázáním na programovou ukázku.

Tento článek vás seznámí s tvrzeními v jednoduchý, ale důležitý koncept a navázat na něj programovou ukázkou. V tomto článku se budeme zabývat následujícími ukazateli,

Pojďme tedy začít





Chcete vyzkoušet, zda je předpoklad ve vašem programu správný? Můžete to udělat pomocí tvrzení tvrzení v Javě. Klíčové slovo assert můžete použít k vytvoření tvrzení, která vám umožní otestovat své předpoklady v programu.

Pojďme si vzít příklad. Zaměstnanec ve společnosti ABC nemůže mít věk, který je záporným číslem. K tomu můžete použít tvrzení, abyste se ujistili, že věk zaměstnance není záporné číslo.



Pojďme si vzít další příklad. Pokud vaše metoda vypočítá rychlost částice, předpokládáte, že rychlost částice je menší než rychlost světla. Chcete-li tedy tento předpoklad otestovat, můžete v Javě použít tvrzení.

Syntaxe

Existují dvě formy tvrzení:



výraz výrazu

Tady,

výraz 1 je logický výraz.

prosazovat výraz1: výraz2

V této formě je výraz 1 booleovský výraz a výraz 2 má hodnotu, která bude porovnána s výrazem1.

Nyní se můžete zeptat - jakou formu zvolíte pro své programy? Druhý formulář můžete použít, pokud má váš program další informace, které by mohly pomoci diagnostikovat chyby nebo selhání v programu.

Před verzí Java 1.4 jste mohli použít klíčové slovo „assert“ k pojmenování svých proměnných, metod, funkcí a mnohem více. S novějšími verzemi JVM to může potenciálně způsobit střet názvů - musíte si tedy na tuto skutečnost trochu vzpomenout.

Pokračujeme tímto článkem o tvrzeních v Javě

Proč potřebujete tvrzení?

Možná si myslíte, že tvrzení v Javě může být zbytečné. Pro malé programy se vám může zdát zbytečné. Ale pokud jde o velké programy se složitou logikou, tato tvrzení jsou užitečná.

Primární použití příkazů tvrzení je pro ladění a testování. Pokud dojde k chybě v tvrzení tvrzení, pak JVM vyvolá chybu, která je označena jako AssertionError. Jak vidíte, nabízí to efektivní způsob detekce a opravy chyb v programu.

Kromě ladění a testování umožňuje tvrzení tvůj kód čitelnější. Vezměme si příklad:

php promění řetězec na pole

Níže uvedený kód nám pomůže ověřit určité podmínky, které mohou bránit správné funkci aplikace.

Připojení conn = getConnection () if (conn == null) {hodit novou RuntimeException ('Connection is null')}

S jediným příkazem tvrzení můžete v zásadě zrušit příkaz „if and throw“, jak je znázorněno níže:

Connection conn = getConnection () assert conn! = Null

Pokračujeme tímto článkem o tvrzeních v Javě

Povolení a zakázání tvrzení Java

Protože výroky Java používají klíčové slovo assert, nebudete muset importovat balíčky nebo knihovny. Jak již bylo zmíněno dříve, klíčové slovo assert můžete použít pro proměnné, metody a funkce. Z důvodu zpětné kompatibility a aby se zabránilo potenciálnímu střetu jmen, JVM ve výchozím nastavení zakáže ověření tvrzení. Tvrzení musí být povolena výslovně. Můžete tak učinit pomocí argumentu příkazového řádku (-enableassertions) nebo pomocí jeho zkratky (-ea).

Uvažujme několik příkladů:

java -ea com.baeldung.assertion.Assertion

Výše uvedené umožňuje uplatnění pro třídy.

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

Můžete také povolit tvrzení pro konkrétní balíčky a třídy. To se ukazuje ve výše uvedeném příkladu, kde jsme povolili tvrzení pro třídy v balíčku com.baeldung.assertion.

Nyní, když jsme se dozvěděli o povolení tvrzení, pojďme se podívat, jak je můžeme deaktivovat. Stejně jako povolení tvrzení lze zakázání provést pomocí argumentu příkazového řádku (-disableassertions) nebo jeho zkratky (-da) pro konkrétní balíčky a třídy.

Pokračujeme tímto článkem o tvrzeních v Javě

Jak používat výrazy Java?

Existují dvě věci, které musíte ve svém programu implementovat tvrzení - klíčové slovo assert a boolean podmínka. Uveďme si příklad s fragmentem kódu:

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

Pro výše uvedená tvrzení můžete také použít řetězec, jak je znázorněno níže:

nejlepší java ide pro začátečníky
public void setup () {Connection conn = getConnection () assert conn! = null: 'Connection is null'}

Ve výše uvedeném fragmentu kódu, pokud existuje AssertionError, bude řetězec použit k vytvoření chyby.

V obou výše uvedených případech kód zkontroluje, zda připojení k externímu zdroji vrací nenulovou hodnotu. Pokud je hodnota null, pak JVM automaticky hodí AssertionError.

Ve druhém příkladu se řetězec, který jsme použili, zobrazí v trasování zásobníku, když existuje AssertionError. Tyto další informace budou užitečné, když se pokoušíte ladit program. Tyto podrobné zprávy vám pomohou opravit chybu, která by způsobila selhání tvrzení. Když tedy spustíte třídu se zapnutými tvrzeními, bude výsledek podobný následujícímu:

Výjimka ve vlákně „main“ java.lang.AssertionError: Připojení má hodnotu null
na com.baeldung.assertion.Assertion.setup (Assertion.java:15)
at com.baeldung.assertion.Assertion.main (Assertion.java:10)

Uvažujme jednoduchý příklad:

import třídy java.util.Scanner AssertionExample {public static void main (String args []) {Scanner scanner = new Scanner (System.in) System.out.print ('Enter your age') int value = scanner.nextInt () tvrdit hodnotu> = 18: 'Neplatné' System.out.println ('hodnota je' + hodnota)}}

Nyní, když máte kód v ruce, je čas jej spustit. Protože jsou tvrzení ve výchozím nastavení zakázána, budete je muset povolit.

Výše uvedený kód můžete zkompilovat následujícím způsobem: javac AssertionExample.java

Potom jej můžete spustit pomocí následujícího: java -ea AssertionExample

The výstup pro výše uvedený kód je:

Zadejte svůj věk 11 let

Výjimka ve vlákně „main“ java.lang.AssertionError: Neplatné

Jak vidíte, dali jsme 11 jako hodnotu věku. Program s ním nezachází jako s legitimní hodnotou. Uvidíte tedy AssertionError.

Pokračujeme tímto článkem o tvrzeních v Javě

Kde nepoužívat tvrzení?

I když je dobré mít tvrzení v situacích, které zahrnují vnitřní invarianty, invarianty řízení toku, předběžné podmínky, postkondice a třídní invarianty, existují situace, kdy by se tvrzení neměla používat.

Prozkoumejme více o těchto tématech:

Pro kontrolu argumentů ve veřejných metodách

Měli byste pochopit, že kontrola argumentů je součástí publikovaných specifikací nebo kontraktů metody. Musí být dodrženy bez ohledu na to, zda jsou tvrzení povolena či nikoli.

Pokračujeme tímto článkem o tvrzeních v Javě

Používání tvrzení pro operace

Ve výchozím nastavení jsou tvrzení zakázána. Váš program by neměl předpokládat, že logický výraz v tvrzení bude vždy vyhodnocen.

jaké jsou důvody k vytvoření instance třídy souborů?

Uveďme si příklad, jak by to mohlo ovlivnit váš program. Řekněme, že chcete odstranit všechny nulové prvky ze seznamu jmen a víte, že váš seznam obsahuje nulové prvky.

prosazovat jména. odebrat (null)

Výše uvedený fragment kódu by fungoval, pokud by byla povolena tvrzení. Ale selhalo by, kdyby byla tvrzení zakázána, protože kód neodstraní žádné nulové prvky. Chcete-li tento problém vyřešit, můžete ve svém programu použít následující fragment kódu:

boolean nullsRemoved = names.remove (null)
prosazovat nulyOdebráno

Výše uvedený fragment kódu odstraní hodnoty null, i když byla tvrzení deaktivována.

Nyní po provedení výše uvedeného programu Java byste pochopili „tvrzení v Javě“. Tak jsme dospěli ke konci tohoto článku o „Quicksort v Javě“. Pokud se chcete dozvědět více,podívejte se na Edureka, důvěryhodná online vzdělávací společnost. Školicí a certifikační kurz Edureka Java J2EE a SOA je navržen tak, aby vás vyškolil jak pro základní, tak pro pokročilé koncepty Java spolu s různými rámci Java jako Hibernate & Spring.

Máte na nás dotaz? Uveďte to prosím v sekci komentářů tohoto blogu a my se vám ozveme co nejdříve.