Java wprowadziła nową klasę Opcjonalną w jdk8. Jest to publiczna klasa końcowa używana do obsługi wyjątku NullPointerException w aplikacji Java. Aby móc korzystać z tej klasy, musisz zaimportować pakiet java.util. Zawiera metody służące do sprawdzania obecności wartości dla danej zmiennej.
Opcjonalne metody klas Java
Metody | Opis |
---|---|
public static Opcjonalnie pusty() | Zwraca pusty obiekt opcjonalny. Dla tego Opcjonalnego nie ma żadnej wartości. |
public static Opcjonalne (wartość T) | Zwraca opcję Option z określoną obecną wartością różną od null. |
public static Opcjonalny ofNullable (wartość T) | Zwraca opcję opcjonalną opisującą określoną wartość, jeśli jest różna od null, w przeciwnym razie zwraca pustą opcję opcjonalną. |
publiczny T get() | Jeśli wartość jest obecna w tym opcjonalnym, zwraca wartość, w przeciwnym razie zgłasza wyjątek NoSuchElementException. |
publiczna wartość logiczna isPresent() | Zwraca wartość true, jeśli istnieje wartość, w przeciwnym razie false. |
public void ifPresent(konsument-konsument) | Jeśli wartość jest obecna, wywołaj określonego konsumenta z tą wartością, w przeciwnym razie nie rób nic. |
public Opcjonalny filtr (predykat predykatu) | Jeśli wartość jest obecna i odpowiada podanemu predykatowi, zwróć opcję opcjonalną opisującą wartość, w przeciwnym razie zwróć pustą opcję opcjonalną. |
public Opcjonalna mapa (mapa funkcji) | Jeśli wartość jest obecna, zastosuj do niej podaną funkcję mapowania, a jeśli wynik nie ma wartości null, zwróć opcję Opcjonalną opisującą wynik. W przeciwnym razie zwróć pusty Opcjonalny. |
public Opcjonalna flatMap (Funkcja super T,Optional mapper) | Jeśli wartość jest obecna, zastosuj do niej dostarczoną funkcję mapowania opcjonalnego, zwróć ten wynik, w przeciwnym razie zwróć pustą opcjonalną. |
publiczny T lubElse(T inny) | Zwraca wartość, jeśli jest obecna, w przeciwnym razie zwraca inną. |
public T orElseGet (inny dostawca) | Zwraca wartość, jeśli jest obecna, w przeciwnym razie wywołuje inną i zwraca wynik tego wywołania. |
public T orElseThrow(Wyjątek dostawcyDostawca) rzuca X rozszerza Możliwość rzucania | Zwraca zawartą wartość, jeśli jest obecna, w przeciwnym razie zgłasza wyjątek, który ma zostać utworzony przez dostarczonego dostawcę. |
publiczna wartość logiczna równa się (obiekt obiektu) | Wskazuje, czy jakiś inny obiekt jest „równy” temu Opcjonalnemu, czy nie. Drugi przedmiot uważa się za równy, jeśli:
|
publiczny int hashCode() | Zwraca wartość kodu skrótu bieżącej wartości, jeśli istnieje, lub zwraca 0 (zero), jeśli nie ma żadnej wartości. |
publiczny ciąg znaków doString() | Zwraca niepustą reprezentację tego Opcjonalnego ciągu znaków, odpowiednią do debugowania. Dokładny format prezentacji nie jest określony i może się różnić w zależności od implementacji i wersji. |
Przykład: program Java bez użycia opcji Opcjonalny
W poniższym przykładzie nie używamy klasy Opcjonalnej. Ten program kończy się nieprawidłowo i zgłasza wyjątek nullPointerException.
public class OptionalExample { public static void main(String[] args) { String[] str = new String[10]; String lowercaseString = str[5].toLowerCase(); System.out.print(lowercaseString); } }
Wyjście:
Java elseif
Exception in thread 'main' java.lang.NullPointerException at lambdaExample.OptionalExample.main(OptionalExample.java:6)
Aby uniknąć nieprawidłowego zakończenia, używamy klasy Opcjonalne. W poniższym przykładzie używamy opcji Opcjonalne. Zatem nasz program może działać bez awarii.
Opcjonalny przykład Java: jeśli wartość nie jest obecna
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'); } }
Wyjście:
string value is not present
Opcjonalny przykład Java: jeśli wartość jest obecna
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'); } }
Wyjście:
java optional class example
Inny opcjonalny przykład 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()); } }
Wyjście:
łączenie ciągów Java
JAVA OPTIONAL CLASS EXAMPLE JAVA OPTIONAL CLASS EXAMPLE java optional class example
Przykład opcjonalnych 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 } }
Wyjście:
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