Java představila novou třídu Optional v jdk8. Je to veřejná závěrečná třída a používá se k řešení NullPointerException v aplikaci Java. Chcete-li použít tuto třídu, musíte importovat balíček java.util. Poskytuje metody, které se používají ke kontrole přítomnosti hodnoty pro konkrétní proměnnou.
Metody volitelných tříd Java
Metody | Popis |
---|---|
public static Volitelné empty() | Vrací prázdný volitelný objekt. Tato volitelná položka nemá žádnou hodnotu. |
public static Volitelné z (hodnota T) | Vrátí nepovinné se zadanou současnou nenulovou hodnotou. |
public static Volitelné s možností Null (hodnota T) | Vrátí nepovinné popisující zadanou hodnotu, pokud není null, jinak vrací prázdnou nepovinné. |
veřejné T get() | Pokud je hodnota přítomna v tomto volitelném, vrátí hodnotu, jinak vyvolá NoSuchElementException. |
public boolean isPresent() | Vrací hodnotu true, pokud je přítomna hodnota, v opačném případě vrací hodnotu false. |
veřejná neplatnost, pokud je přítomen (spotřebitel, spotřebitel) | Pokud je přítomna hodnota, vyvolejte zadaného spotřebitele s hodnotou, jinak nedělejte nic. |
public Volitelný filtr (predikátový predikát) | Pokud je přítomna hodnota a hodnota odpovídá danému predikátu, vraťte hodnotu Optional popisující hodnotu, jinak vraťte prázdnou hodnotu Optional. |
veřejná Volitelná mapa (mapovač funkcí) | Pokud je přítomna hodnota, aplikujte na ni poskytnutou mapovací funkci, a pokud výsledek není null, vraťte volbu s popisem výsledku. Jinak vraťte prázdné Volitelné. |
public Volitelná plochá mapa (Function super T,Optional mapper) | Je-li přítomna hodnota, aplikujte na ni poskytnutou funkci mapování volitelného ložiska, vraťte výsledek, jinak vraťte prázdnou volbu. |
veřejné T neboElse (T jiné) | Vrátí hodnotu, pokud je přítomna, jinak vrátí jinou. |
public T orElseGet (jiný dodavatel) | Vrátí hodnotu, pokud je přítomna, jinak vyvolá jinou a vrátí výsledek tohoto vyvolání. |
public T orElseThrow (výjimka dodavateleSupplier) hází X extends Throwable | Vrátí obsaženou hodnotu, pokud existuje, jinak vyvolá výjimku, kterou vytvoří poskytnutý dodavatel. |
public boolean rovná se (Object obj) | Označuje, zda je nějaký jiný objekt „rovný“ této volitelné nebo ne. Druhý objekt je považován za rovnocenný, pokud:
|
public int hashCode() | Vrátí hodnotu hash kódu aktuální hodnoty, pokud existuje, nebo vrátí 0 (nulu), pokud žádná hodnota není přítomna. |
veřejný řetězec toString() | Vrací neprázdnou řetězcovou reprezentaci této volitelné položky vhodnou pro ladění. Přesný formát prezentace není specifikován a může se lišit mezi implementacemi a verzemi. |
Příklad: Java Program bez použití Volitelné
V následujícím příkladu nepoužíváme třídu Optional. Tento program se neobvykle ukončí a vyvolá výjimku nullPointerException.
public class OptionalExample { public static void main(String[] args) { String[] str = new String[10]; String lowercaseString = str[5].toLowerCase(); System.out.print(lowercaseString); } }
Výstup:
Exception in thread 'main' java.lang.NullPointerException at lambdaExample.OptionalExample.main(OptionalExample.java:6)
Abychom se vyhnuli abnormálnímu ukončení, používáme třídu Optional. V následujícím příkladu používáme volitelné. Náš program se tedy může spustit bez pádu.
Java Volitelný Příklad: Pokud hodnota není přítomna
import java.util.Optional; public class OptionalExample { public static void main(String[] args) { String[] str = new String[10]; Optional checkNull = Optional.ofNullable(str[5]); if(checkNull.isPresent()){ // check for value is present or not String lowercaseString = str[5].toLowerCase(); System.out.print(lowercaseString); }else System.out.println('string value is not present'); } }
Výstup:
string value is not present
Java Volitelný Příklad: If Value is Present
import java.util.Optional; public class OptionalExample { public static void main(String[] args) { String[] str = new String[10]; str[5] = 'JAVA OPTIONAL CLASS EXAMPLE';// Setting value for 5th index Optional checkNull = Optional.ofNullable(str[5]); if(checkNull.isPresent()){ // It Checks, value is present or not String lowercaseString = str[5].toLowerCase(); System.out.print(lowercaseString); }else System.out.println('String value is not present'); } }
Výstup:
java optional class example
Další volitelný příklad Java
import java.util.Optional; public class OptionalExample { public static void main(String[] args) { String[] str = new String[10]; str[5] = 'JAVA OPTIONAL CLASS EXAMPLE'; // Setting value for 5th index Optional checkNull = Optional.ofNullable(str[5]); checkNull.ifPresent(System.out::println); // printing value by using method reference System.out.println(checkNull.get()); // printing value by using get method System.out.println(str[5].toLowerCase()); } }
Výstup:
JAVA OPTIONAL CLASS EXAMPLE JAVA OPTIONAL CLASS EXAMPLE java optional class example
Příklad volitelných metod Java
import java.util.Optional; public class OptionalExample { public static void main(String[] args) { String[] str = new String[10]; str[5] = 'JAVA OPTIONAL CLASS EXAMPLE'; // Setting value for 5th index // It returns an empty instance of Optional class Optional empty = Optional.empty(); System.out.println(empty); // It returns a non-empty Optional Optional value = Optional.of(str[5]); // If value is present, it returns an Optional otherwise returns an empty Optional System.out.println('Filtered value: '+value.filter((s)->s.equals('Abc'))); System.out.println('Filtered value: '+value.filter((s)->s.equals('JAVA OPTIONAL CLASS EXAMPLE'))); // It returns value of an Optional. if value is not present, it throws an NoSuchElementException System.out.println('Getting value: '+value.get()); // It returns hashCode of the value System.out.println('Getting hashCode: '+value.hashCode()); // It returns true if value is present, otherwise false System.out.println('Is value present: '+value.isPresent()); // It returns non-empty Optional if value is present, otherwise returns an empty Optional System.out.println('Nullable Optional: '+Optional.ofNullable(str[5])); // It returns value if available, otherwise returns specified value, System.out.println('orElse: '+value.orElse('Value is not present')); System.out.println('orElse: '+empty.orElse('Value is not present')); value.ifPresent(System.out::println); // printing value by using method reference } }
Výstup:
Optional.empty Filtered value: Optional.empty Filtered value: Optional[JAVA OPTIONAL CLASS EXAMPLE] Getting value: JAVA OPTIONAL CLASS EXAMPLE Getting hashCode: -619947648 Is value present: true Nullable Optional: Optional[JAVA OPTIONAL CLASS EXAMPLE] orElse: JAVA OPTIONAL CLASS EXAMPLE orElse: Value is not present JAVA OPTIONAL CLASS EXAMPLE