Díl 2

Použití znaku podtržení v proměnných

Navazujeme na minulý díl, ve kterém jsme shrnuli stručnou historii Javy 7, JVM, invokedynamic a statement Switch.

Nově v Javě 7 můžete pro lepší čitelnost použít tam, kde je to dovoleno, v číselných proměnných znaky podtržení. Toto rozšíření jazyka nemá žádný jiný význam, než zlepšení čitelnosti kódu člověkem. Má však svá omezení, které je potřeba si zapamatovat.

  • Podtržení nelze použít na začátku proměnné. Proto není možné používat např. takto: long productKey = _12345_67890_09876_54321L;
  • Podtržení nelze použít na konci proměnné: long licenseNumber = 123_456_789_L;
  • Podtržení nelze použít ihned před či za desetinnou čárkou: float pi = 3._14_15F;

Podtržení lze vložit i do hexadecimálních či binárních proměnných:
int commandInHex = 0xE_23D5_8C_7;
int commandInBinary = 0b1110_0010001111010101_10001100_0111;

Try-With-Resources

Před Javou 7 musely být všechny zdroje (Resources, např.: java.io.InputStream nebo java.nio.Channel) správně otevřeny a uzavřeny. Aby se zjednodušilo zachytávání výjimek, byla do Javy 7 přidána deklarace bloku try-with-resources. Jakmile existuje blok TRY, budou na jeho konci všechny zdroje (resources) automaticky uzavřeny. Zdroje, deklarované uvnitř bloku try musí implementovat rozhraní java.lang.AutoCloseable. Tento přístup umožňuje psát úhlednější kód, jelikož není potřeba zanořovat další a další try-catch bloky. Jelikož se automaticky stará o zavírání zdrojů, je v literatuře tato implementace často nazývána ARM (Automated Resource Management – Automatické řízení zdrojů).

Kód

 public static void main(String[] args) {
    try (BufferedReader inputReader = Files.newBufferedReader(
    Paths.get(new URI("file:///C:/home/docs/users.txt")),
    Charset.defaultCharset());
    BufferedWriter outputWriter = Files.
    newBufferedWriter(Paths.get(new URI("file:///C:/home/docs/users.bak")),
    Charset.defaultCharset())) {
        String inputLine;
            while ((inputLine = inputReader.readLine()) != null) {
                outputWriter.write(inputLine);
                outputWriter.newLine();
            }
            System.out.println("Copy complete!");
        }
        catch (URISyntaxException | IOException ex) {
            ex.printStackTrace();
        }
    }

Aby bylo možno implementovat do Javy blok try-with-resources, byl do knihovny java.lang.Exception přidán nový konstruktor se dvěma metodami addSuppressed a getSuppressed. Výjimky tyku Suppressed jsou takové, které nejsou explicitně oznamovány.

Omezení try-with-resources

Tento přístup není vhodné používat, pokud používáte pouze jeden zdroj. Například tento kód je velmi těžko čitelný:

Kód

try (BufferedReader inputReader = Files.newBufferedReader(
    Paths.get(new URI("file:///C:/home/docs/users.txt")),
    Charset.defaultCharset())) {
        String inputLine;
        while ((inputLine = inputReader.readLine()) != null) {
            System.out.println(inputLine);
            }
        }
        catch (IOException | URISyntaxException ex) {
        ex.printStackTrace();
    }
            

Kdeždo starý zápis bez try-with-resources je daleko lépe čitelný:

Kód

try {
    Path path = Paths.get("users.txt");
    BufferedReader inputReader = Files.newBufferedReader(path, Charset.defaultCharset());
    String inputLine;
    while ((inputLine = inputReader.readLine()) != null) {
        System.out.println(inputLine);
        }
    }
catch (IOException ex) {
ex.printStackTrace();
}

Třída AssertionError v Java 7

Při psaní komplexnějšíchaplikací je vhodné používat Assertions. Assertion je zápis, který při testu porovnává výsledek s tvrzením, které očekáváte.

Například:

Kód

import java.io.*;

public class AssertionTest {

public static void main(String argv[]) throws IOException {
    System.out.print("Enter your marital status: ");
    int c = System.in.read();
    switch ((char) c) {
        case 's':
        case 'S':
            System.out.println("Single"); 
        break;
        case 'm':
        case 'M':
            System.out.println("Married");
        break;
        case 'd':
        case 'D':
            System.out.println("Divorced");
        break;
        default: 
            assert !true : "Invalid Option";
        break;
        }
    }
}

V Java 7 byl přidán nový konstruktor, jenž umožňuje přiřadit uživatelsky generované chybě assertion zprávu.

Kód

 ...
 if(number>10) {
 throw new AssertionError("Number was too big",new
 Throwable("Throwable assertion message"));
 }
...

Pokud v uvedeném kódu bude proměnná number větší než 10, vyvolá se výjimka:
Exception in thread "main" java.lang.AssertionError: Number was too big at Mujkod.main(Mujkod.java:5)
Caused by: java.lang.Throwable: Throwable assertion message

Zdroj

OCA OCP Java SE Programmer I & II Study Guide, Sierra K., Bates B.
Java 7 New Features Cookbook, Richard and Jennifer Reese
docs.oracle.com/javase

Příště: Opětovné volání výjimek a Anotace SafeVarargs.


SEO od společnosti Digital Pylon


Online casino s algoritmem

České casino online online slot-vegas.cz

Hrajte nejlepší hry jako je GoodGame Empire.





Zajímavé články: Jak najít práci snů? Zvolte kariéru v IT!, Češi mají rádi hrací automaty online, Jak funguje algoritmické obchodování Casino, Online výuka Algoritmus a online marketing mají svá pravidla, Automaty, Matematický vliv, Ratings, Jak fungují algoritmy hazardních her online: více znalostí, více peněz, SYPWAI - nástroj pro vědecký vývoj, Vynikají na globálním trhu: Nejlepší vývojáři softwaru pro online výherní automaty, Jak si vybrat nejlepší české online casino, Proč byste měli hrát online casino VPN revoluce, Kde najdeme algoritmy v každodenním životě?, Čeká vás pracovní pohovor mimo město? Podívejte se, jak dokonale zvládnout včasný příchod, 5 úžasných technologií ze světa hazardních her, Mirror and access to Mostbet, Svou kancelář můžete mít stále po ruce, Jaké výhody má digitalizovaná firma oproti off-line konkurenci?, Jaký systém vybrat pro snadné řízení výroby?, Nahradí umělá inteligence ajťáky?, Důvody, proč používat SnapTik ke stahování videí TikTok, Dokonalý den na pláži: Co si vzít s sebou, aby byl výlet zábavný a bezpečný?, Jak přežít dlouhý let?, Go pay GoodGame Empire, Blockchain, Rozhovor, Umělá inteligence


Doporučujeme

Internet pro vaši firmu na míru

https://www.algoritmy.net