logo

Opcjonalna klasa Java

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 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:
  • Jest to również opcjonalne i;
  • Obie instancje nie mają żadnej wartości lub;
  • obecne wartości są sobie „równe” poprzez funkcję równości().
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