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ó super T,Optional mapper) | 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:
|
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