logo

Classe opcional de Java

Java va introduir una nova classe Opcional a jdk8. És una classe final pública i s'utilitza per fer front a NullPointerException a l'aplicació Java. Heu d'importar el paquet java.util per utilitzar aquesta classe. Proporciona mètodes que s'utilitzen per comprovar la presència de valor per a una variable concreta.

Mètodes de classe opcionals de Java

Mètodes Descripció
public static Opcional empty() Retorna un objecte opcional buit. No hi ha cap valor per a aquesta Opcional.
public static Opcional de (valor T) Retorna un Opcional amb el valor actual no nul especificat.
public static Opcional de Nullable (valor T) Retorna un Opcional que descriu el valor especificat, si no és nul, en cas contrari retorna un Opcional buit.
públic T get() Si hi ha un valor en aquest Opcional, retorna el valor, en cas contrari, llança NoSuchElementException.
booleà públic isPresent() Retorna true si hi ha un valor present, en cas contrari, fals.
public void ifPresent (consumidor consumidor) Si hi ha un valor, invoqueu el consumidor especificat amb el valor, en cas contrari no feu res.
public Filtre opcional (predicat de predicat) Si hi ha un valor i el valor coincideix amb el predicat donat, retorneu un Opcional que descrigui el valor, en cas contrari retorneu un Opcional buit.
públic Mapa opcional (Mapeador de funcions) Si hi ha un valor, apliqueu-hi la funció de mapatge proporcionada i, si el resultat no és nul, retorneu un Opcional que descrigui el resultat. En cas contrari, retorneu un Opcional buit.
public Opcional flatMap (Funció Si hi ha un valor, apliqueu-hi la funció de mapeig opcional proporcionada, retorneu aquest resultat, en cas contrari retorneu un Opcional buit.
Public T or Else (T un altre) Retorna el valor si està present, en cas contrari retorna un altre.
public T orElseGet (proveïdor altre) Retorna el valor si està present, en cas contrari, invoca other i retorna el resultat d'aquesta invocació.
public T orElseThrow(Supplier exceptionSupplier) llança X extends Throwable Retorna el valor contingut, si està present, en cas contrari, llança una excepció que ha de crear el proveïdor proporcionat.
booleà públic és igual a (objecte objecte) Indica si algun altre objecte és 'igual a' aquest Opcional o no. L'altre objecte es considera igual si:
  • També és un Opcional i;
  • Ambdues instàncies no tenen valor present o;
  • els valors actuals són 'iguals' entre si mitjançant equals().
public int hashCode() Retorna el valor del codi hash del valor actual, si n'hi ha, o retorna 0 (zero) si no hi ha cap valor.
Public String toString() Retorna una representació de cadena no buida d'aquesta Opcional adequada per a la depuració. El format de presentació exacte no s'especifica i pot variar entre implementacions i versions.

Exemple: Programa Java sense utilitzar Opcional

En l'exemple següent, no estem utilitzant la classe Opcional. Aquest programa finalitza de manera anormal i llança una nullPointerException.

 public class OptionalExample { public static void main(String[] args) { String[] str = new String[10]; String lowercaseString = str[5].toLowerCase(); System.out.print(lowercaseString); } } 

Sortida:

 Exception in thread 'main' java.lang.NullPointerException at lambdaExample.OptionalExample.main(OptionalExample.java:6) 

Per evitar la terminació anormal, utilitzem la classe Opcional. En l'exemple següent, estem fent servir Opcional. Per tant, el nostre programa es pot executar sense fallar.


Exemple opcional de Java: si el valor no és present

 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'); } } 

Sortida:

 string value is not present 

Exemple opcional de Java: si el valor és 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'); } } 

Sortida:

 java optional class example 

Un altre exemple opcional de 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()); } } 

Sortida:

 JAVA OPTIONAL CLASS EXAMPLE JAVA OPTIONAL CLASS EXAMPLE java optional class example 

Exemple de mètodes opcionals de 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 } } 

Sortida:

 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